当前位置: 首页 > news >正文

mybatis+postgresql,无感读写json字段

1.实体类中字段类型

import com.alibaba.fastjson.JSONObject;@Data
public class TestDto {private String name;//对应数据库的JSON字段private JSONObject page_detail;}

2.自定义实现typeHandler

package base.utils;import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.type.*;import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;@MappedTypes(JSONObject.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class JsonTypeHandler extends BaseTypeHandler<JSONObject>{/*** 设置非空参数* @param ps* @param i* @param parameter* @param jdbcType* @throws SQLException*/@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter, JdbcType jdbcType) throws SQLException {ps.setString(i,String.valueOf(parameter.toJSONString()));}/*** 根据列名,获取可以为空的结果* @param rs* @param columnName* @return* @throws SQLException*/@Overridepublic JSONObject getNullableResult(ResultSet rs, String columnName) throws SQLException {String sqlJson = rs.getString(columnName);if (null != sqlJson) {return JSONObject.parseObject(sqlJson);}return null;}/*** 根据列索引,获取可以为内控的接口* @param rs* @param columnIndex* @return* @throws SQLException*/@Overridepublic JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException {String sqlJson = rs.getString(columnIndex);if (null != sqlJson) {return JSONObject.parseObject(sqlJson);}return null;}/**** @param cs* @param columnIndex* @return* @throws SQLException*/@Overridepublic JSONObject getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {String sqlJson = cs.getNString(columnIndex);if (null != sqlJson) {return JSONObject.parseObject(sqlJson);}return null;}}

3.SQL文件

<insert id="addTest">insert into test (name,page_detail)values (#{name},#{page_detail})
</insert>

4.修改配置文件

4.1 mybatis-spring-boot-starter

由于mybatis-spring-boot-starter可无需Mybatis配置文件,可直接在项目配置文件application.properties中进行配置

#指定类型处理器的所在包的路径
mybatis.type-handlers-package=base.utils

4.1 mybatis-spring

mybatis-spring则在mybatis-config.xml中增加typeHandler 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><settings>//略...</settings><typeAliases>//略...</typeAliases><typeHandlers><typeHandler handler="base.utils.JsonTypeHandler"/></typeHandlers>
</configuration>

5.JDBC URL 增加配置

#jdbc增加配置stringtype=unspecified
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/test?stringtype=unspecified


http://www.mrgr.cn/news/68605.html

相关文章:

  • 【分享】这篇教程助力你成为 JavaScript 糕手!(四)
  • 科大讯飞离线lunix tts demo使用
  • 昔日IT圈的热点话题“虚拟化和容器技术路线之争”,现在怎么样了?
  • Spring Boot实战:构建大学城水电管理系统
  • 新疆高校大数据实验室案例分享
  • 基于开源 AI 智能名片、S2B2C 商城小程序的用户获取成本优化分析
  • Dinky控制台:利用SSE技术实现实时日志监控与操作
  • ONLYOFFICE ——让团队合作更高效
  • Java 上机实践2(基础数据类型与数组)
  • SD-定价关于Condition is Inactive
  • 【AtCoder】Beginner Contest 377-C.Avoid Knight Attack
  • C#基础-区分数组与集合
  • 数组模拟单链表-acwing
  • Redis - 主从复制
  • 回溯算法详解与剪枝优化
  • 叶子祺东京被偶遇 素颜逆天 身材火辣
  • C语言初阶必会的练习题(3)之位操作符(^ 、、>>等)的应用
  • 什么是crm客户关系管理系统?全面认识指南
  • C++ EBO介绍
  • qt QClipboard详解
  • petty 状态管理库文档
  • 【Linux】进程信号全攻略(一)
  • 【论文复现】基于深度学习的手势识别算法
  • 2024年了,还适合入行嵌入式吗?
  • jdk17启动项目报错
  • 安装指定版本的transfomers报错ERROR: Failed building wheel for tokenizers