소스 검색

@
fix: JsonbTypeHandler 改用 Types.OTHER 避免依赖 PGobject

PGobject 在 postgresql(scope=runtime) 下编译不可用。
Types.OTHER 让 PG JDBC 驱动自动处理 String→jsonb 映射。
@

alphaH 7 시간 전
부모
커밋
bc88576ee2
1개의 변경된 파일6개의 추가작업 그리고 10개의 파일을 삭제
  1. 6 10
      java/src/main/java/com/payment/platform/common/handler/JsonbTypeHandler.java

+ 6 - 10
java/src/main/java/com/payment/platform/common/handler/JsonbTypeHandler.java

@@ -3,29 +3,24 @@ package com.payment.platform.common.handler;
 import org.apache.ibatis.type.BaseTypeHandler;
 import org.apache.ibatis.type.JdbcType;
 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;
+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)
 public class JsonbTypeHandler extends BaseTypeHandler<String> {
 
-    private static final String JSONB_TYPE = "jsonb";
-
     @Override
     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
@@ -43,3 +38,4 @@ public class JsonbTypeHandler extends BaseTypeHandler<String> {
         return cs.getString(columnIndex);
     }
 }
+