|
@@ -3,29 +3,24 @@ package com.payment.platform.common.handler;
|
|
|
import org.apache.ibatis.type.BaseTypeHandler;
|
|
import org.apache.ibatis.type.BaseTypeHandler;
|
|
|
import org.apache.ibatis.type.JdbcType;
|
|
import org.apache.ibatis.type.JdbcType;
|
|
|
import org.apache.ibatis.type.MappedTypes;
|
|
import org.apache.ibatis.type.MappedTypes;
|
|
|
-import org.postgresql.util.PGobject;
|
|
|
|
|
|
|
|
|
|
import java.sql.CallableStatement;
|
|
import java.sql.CallableStatement;
|
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.PreparedStatement;
|
|
|
import java.sql.ResultSet;
|
|
import java.sql.ResultSet;
|
|
|
import java.sql.SQLException;
|
|
import java.sql.SQLException;
|
|
|
|
|
+import java.sql.Types;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * String ↔ PostgreSQL jsonb 类型转换器
|
|
|
|
|
- * MyBatis-Plus 默认将 String 映射为 VARCHAR,与 jsonb 列类型冲突。
|
|
|
|
|
- * 此 handler 将 String 值包装为 PGobject("jsonb"),解决 INSERT/UPDATE 时的类型转换问题。
|
|
|
|
|
|
|
+ * String → PostgreSQL jsonb 类型转换器
|
|
|
|
|
+ * 使用 Types.OTHER 让 PG JDBC 驱动自动识别为 json 类型。
|
|
|
|
|
+MyBatis-Plus 默认将 String 映射为 VARCHAR,与 jsonb 列类型冲突。
|
|
|
*/
|
|
*/
|
|
|
@MappedTypes(String.class)
|
|
@MappedTypes(String.class)
|
|
|
public class JsonbTypeHandler extends BaseTypeHandler<String> {
|
|
public class JsonbTypeHandler extends BaseTypeHandler<String> {
|
|
|
|
|
|
|
|
- private static final String JSONB_TYPE = "jsonb";
|
|
|
|
|
-
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
|
|
public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
|
|
|
- PGobject pgObject = new PGobject();
|
|
|
|
|
- pgObject.setType(JSONB_TYPE);
|
|
|
|
|
- pgObject.setValue(parameter);
|
|
|
|
|
- ps.setObject(i, pgObject);
|
|
|
|
|
|
|
+ ps.setObject(i, parameter, Types.OTHER);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -43,3 +38,4 @@ public class JsonbTypeHandler extends BaseTypeHandler<String> {
|
|
|
return cs.getString(columnIndex);
|
|
return cs.getString(columnIndex);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|