|
|
@@ -0,0 +1,49 @@
|
|
|
+package com.lingyue.common.mybatis;
|
|
|
+
|
|
|
+import org.apache.ibatis.type.BaseTypeHandler;
|
|
|
+import org.apache.ibatis.type.JdbcType;
|
|
|
+import org.apache.ibatis.type.MappedJdbcTypes;
|
|
|
+import org.apache.ibatis.type.MappedTypes;
|
|
|
+import org.postgresql.util.PGobject;
|
|
|
+
|
|
|
+import java.sql.CallableStatement;
|
|
|
+import java.sql.PreparedStatement;
|
|
|
+import java.sql.ResultSet;
|
|
|
+import java.sql.SQLException;
|
|
|
+
|
|
|
+/**
|
|
|
+ * PostgreSQL pgvector 类型处理器
|
|
|
+ *
|
|
|
+ * 负责将向量字符串写入 pgvector 类型列。
|
|
|
+ *
|
|
|
+ * @author lingyue
|
|
|
+ * @since 2026-01-17
|
|
|
+ */
|
|
|
+@MappedTypes({String.class})
|
|
|
+@MappedJdbcTypes(JdbcType.OTHER)
|
|
|
+public class PostgreSqlVectorTypeHandler extends BaseTypeHandler<String> {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)
|
|
|
+ throws SQLException {
|
|
|
+ PGobject pgObject = new PGobject();
|
|
|
+ pgObject.setType("vector");
|
|
|
+ pgObject.setValue(parameter);
|
|
|
+ ps.setObject(i, pgObject);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
|
|
|
+ return rs.getString(columnName);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
|
|
|
+ return rs.getString(columnIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
|
|
|
+ return cs.getString(columnIndex);
|
|
|
+ }
|
|
|
+}
|