解决在springboot+mybatis+postgresql时,数据库字段类型为json时,如何与mybatis进行映射
2018-05-29 17:59
2221 查看
版权声明: https://blog.csdn.net/qq_18298439/article/details/80499703
pg 数据库中 某字段类型为json
Java实体中对应类型是 jsonObject
private JSONObject info;在mybatis的xml中,常规无法直接进行映射,需要自己写一个TypeHandler,自定义一个JSONTypeHandlerPg类具体代码:
package com.geovis.common.config; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedTypes; import org.postgresql.util.PGobject; @MappedTypes(Object.class) public class JSONTypeHandlerPg extends BaseTypeHandler<Object> { private static final PGobject jsonObject = new PGobject(); @Override public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { jsonObject.setType("json"); jsonObject.setValue(parameter.toString()); ps.setObject(i, jsonObject); } @Override public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return rs.getString(columnIndex); } @Override public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return cs.getString(columnIndex); } @Override public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { return rs.getString(columnName); } }xml文件代码:
<resultMap id="BaseResultMap" type="com.geovis.domain.DataObject" > <id column="id" property="id" /> <result column="info" property="info" javaType="Object" typeHandler="com.geovis.common.config.JSONTypeHandlerPg" /> <result column="uploadtime" property="uploadtime" jdbcType="TIMESTAMP" /> </resultMap>插入数据时可以这么使用:
<insert id="insert" parameterType="com.geovis.domain.DataObject" > insert into data_object(info,uploadtime) values (#{info,javaType=Object,jdbcType=OTHER,typeHandler=com.geovis.common.config.JSONTypeHandlerPg},#{uploadtime,jdbcType=TIMESTAMP} ) returning id </insert>阅读更多
相关文章推荐
- 【Spring-boot 】FastJson对json数据进行解析(类型转换)
- springboot + mybatis 多数据源配置 数据库与实体类映射(驼峰命名法)
- 解决在mybatis中使用CTE进行oracle查询数据类型为long的字段出现流关闭问题
- Spring Boot快速入门(五):使用MyBatis(注解形式)进行数据库操作
- postgreSQL-如何查数据库表、字段以及字段类型、注释等信息?
- spring boot mybatis多数据源,后端进行数据库读写分离
- spring boot String类型json 存入数据库
- java的UUID类型字段,如何通过jdbc进行数据库的CRUD
- java的UUID类型字段,如何通过jdbc进行数据库的CRUD
- Mybatis插入postgresql数据库中类型为UUID的字段
- 解决spring boot整合mybatis时 返回map value为空字段不显示
- 解决在mybatis中使用CTE进行oracle查询数据类型为long的字段出现流关闭问题
- springboot+mybatis如何解决多数据源问题(三)
- hibernate 映射文件 当表名或字段名与数据库关键字冲突 该如何解决?
- 关于怎么解决从ajax传入的json参数注入到Controller的接收对象 以及如何在Spring Boot项目使用参数校验
- 如何把数据库里某个字段的值映射到JSP页面单按钮上
- Mybatis解决空字符串保存入Mysql数字字段的类型转换问题
- myBatis中如何进行数据库访问
- 不同类型的数据层如何进行属性字段的连接?
- hibernate映射数据库表如何在不插入值的情况下使表中字段默认值生效