spring mysql json_SpringBoot+MYSQL 配置支持json数据格式
自定义handler处理器
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.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import com.alibaba.fastjson.JSONObject;
/**
* mysql中json类型转换扩展
*
* @author: xiaowei.go
* @date: 2019年11月20日
*
*/
@MappedTypes(JSONObject.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class MySqlJsonHandler extends BaseTypeHandler {
/**
* 设置非空参数
*
* @author: xiaowei.go
* @date: 2019年11月20日
* @see org.apache.ibatis.type.BaseTypeHandler#setNonNullParameter(java.sql.PreparedStatement,
* int, java.lang.Object, org.apache.ibatis.type.JdbcType)
*/
@Override
public void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter,
JdbcType jdbcType) throws SQLException {
ps.setString(i, String.valueOf(parameter.toJSONString()));
}
/**
* 根据列名,获取可以为空的结果
*
* @author: xiaowei.go
* @date: 2019年11月20日
* @see org.apache.ibatis.type.BaseTypeHandler#getNullableResult(java.sql.ResultSet,
* java.lang.String)
*/
@Override
public JSONObject getNullableResult(ResultSet rs, String columnName) throws SQLException {
String sqlJson = rs.getString(columnName);
if (null != sqlJson) {
return JSONObject.parseObject(sqlJson);
}
return null;
}
/**
* 根据列索引,获取可以为空的结果
*
* @author: xiaowei.go
* @date: 2019年11月20日
* @see org.apache.ibatis.type.BaseTypeHandler#getNullableResult(java.sql.ResultSet, int)
*/
@Override
public JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
String sqlJson = rs.getString(columnIndex);
if (null != sqlJson) {
return JSONObject.parseObject(sqlJson);
}
return null;
}
/**
* 根据列索引,获取可以为空的结果
*
* @author: xiaowei.go
* @date: 2019年11月20日
* @see org.apache.ibatis.type.BaseTypeHandler#getNullableResult(java.sql.CallableStatement, int)
*/
@Override
public JSONObject getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
String sqlJson = cs.getString(columnIndex);
if (null != sqlJson) {
return JSONObject.parseObject(sqlJson);
}
return null;
}
}
实体类
代码段
import com.alibaba.fastjson.JSONObject;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class BizExportJob implements Serializable {
private JSONObject dataRule;
}
map.xml配置
insert into table (data_rule) values (#{dataRule,jdbcType=OTHER,typeHandler=com.magicpose.handler.MySqlJsonHandler})
注册Handler
2种方式
在application.yml声明handler包
mybatis:
config-location: classpath:mybatis-config.xml
mapperLocations: classpath:mappers/*.xml
#配置mybaits自定义类型转换类所在的包
type-handlers-package: com.magicpose.handler
在mybatis-config.xml中注册该Handler
附:优化版
既然自定义handler处理字段值,当然可以直接转化为java bean.
// 注册器如下定义,其他方法参考返回为JSONObject类型的,转化为Class
public class MySqlJsonHandler extends BaseTypeHandler{
private Class clazz;
}
使用mybatis-config.xml中注册该Handler,增加 javaType属性,指定该处理器转换的java bean
记得实体类的属性类型修改为对应的java bean
spring mysql json_SpringBoot+MYSQL 配置支持json数据格式相关推荐
- JSON数据格式详解
文章目录 JSON数据格式概念 JSON的简单数据 JSON对象 对象的属性也可以是JSON对象 JSON格式表示简单数组 对象数组 使用二维数组保存 二维数组 访问淘宝的接口也可以取得JSON格式的 ...
- JSON数据格式超全总结
** JSON数据格式超全总结** 1.JSON数据格式概念 JSON数据现在是我们开发中用的最多的,百分之九十的数据都是通过JSON方式进行传输,那么JSON是什么呢? JSON其实是一种轻量级的数 ...
- spring boot多数据源配置(mysql,redis,mongodb)实战
使用Spring Boot Starter提升效率 虽然不同的starter实现起来各有差异,但是他们基本上都会使用到两个相同的内容:ConfigurationProperties和AutoConfi ...
- 【MySQL笔记】mysql来源安装/配置步骤和支持中国gbk/gb2312编码配置
不久的学习笔记.分享.我想有很大的帮助谁刚开始学习其他人的 备注:该票据于mysql-5.1.73版本号例如 1. mysql源代码编译/安装步骤 1) 官网下载mysql源代码并解压 2) cd至源 ...
- Spring Boot使用spring-data-jpa配置Mysql多数据源
转载请注明出处 :Spring Boot使用spring-data-jpa配置Mysql多数据源 我们在之前的文章中已经学习了Spring Boot中使用mysql数据库 在单数据源的情况下,Spri ...
- MySQL/MariaDB中如何支持全部的Unicodesql数据库及配置环境变量的图文教程
文章来源: 学习通http://www.jaxp.net/ 目录 安装mysql 配置环境变量 安装mysql 下载mysql.我下载的是:mysql-8.0.11-macos10.13-x86_64 ...
- centos编译安装配置支持ssl加密的mysql replication
参考文章:http://www.howtoforge.com/how-to-set-up-mysql-database-replication-with-ssl-encryption-on-cento ...
- mysql ssl编译_centos编译安装配置支持ssl加密的mysql replication
参考文章:http://www.howtoforge.com/how-to-set-up-mysql-database-replication-with-ssl-encryption-on-cento ...
- MySql 5.7 json数据格式 增删改查 操作 (不定时更新)
2019独角兽企业重金招聘Python工程师标准>>> 测试的表的结构如下: CREATE TABLE `userinfo` (`id` int(11) NOT NULL,`user ...
最新文章
- 也议MySQL中隐式转换
- Android Loader机制
- 为什么 Java 线程没有 Running 状态?
- M码小黄衫买家秀=w=
- (3)websocket实现单聊和群聊
- 【转】3.3SharePoint服务器端对象模型 之 访问文件和文件夹(Part 3)
- SAP自学指南:案例公司的需求分析
- 三、JVM — 类加载过程
- mysql数据库管理手册_CentOS MySQL 用户及数据库管理手册
- cygwin中如何使用gcc
- 婚纱租赁APP开发功能模块解析
- 推荐3个干净、资源多的看剧网站给大家
- tp3.2简单的图片上传实现
- Python-docx生成word文档
- GSM和GPRS网络原理的基本思路
- proceed with launch?解决办法
- C语言:实现勾股定理的运算
- 辨别肖特基二极管好坏的窍门,看完一目了然
- 太阳 仰角和方位角(Elevation and Azimuth)
- 在家进行硬件升级:入侵Nintendo Joy-Con控制器