Springboot + Mybatis 操作 PostgreSQl 中的Jsonp类型
在网上翻了好多资料,刚开始试网上的方法的是有一个 PGobject类始终 引用不到。这个时候需要更改pom文件
注释掉下面那一行刷新maven就可以找到了。
<dependency>
<groupId>org.postgresql
</groupId>
<artifactId>postgresql
</artifactId>
</dependency>
新增typeHandler
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
;
@MappedTypes(Object
.class)
public class JsonTypeHandler extends BaseTypeHandler<Object> {
private static final PGobject jsonObject
= new PGobject();
@Override
public void setNonNullParameter(PreparedStatement preparedStatement
, int i
, Object o
, JdbcType jdbcType
) throws SQLException
{
jsonObject
.setType("json");
jsonObject
.setValue(o
.toString());
preparedStatement
.setObject(i
, jsonObject
);
}
@Override
public Object
getNullableResult(ResultSet resultSet
, String s
) throws SQLException
{
return resultSet
.getString(s
);
}
@Override
public Object
getNullableResult(ResultSet resultSet
, int i
) throws SQLException
{
return resultSet
.getString(i
);
}
@Override
public Object
getNullableResult(CallableStatement callableStatement
, int i
) throws SQLException
{
return callableStatement
.getString(i
);
}
}
需要在Mybatis的Mapper中加入typeHandler="com.naine.demo.config.JsonTypeHandler"
在这里我domain层里映射的Java类型是Object
<resultMap id="BaseResultMap">
<result column="key_results" jdbcType="OTHER" property="keyResults" typeHandler="com.naine.demo.config.JsonTypeHandler"/>
</resultMap>
在添加和修改的SQL上加入 这样就可以使用了 不然就会报错
#{keyResults,jdbcType=OTHER, typeHandler=com.naine.demo.config.JsonTypeHandler},