mysql json mybatis_mybatis支持json,Spring boot配置
mysql5.7版本以后支持原生json格式,基于Spring boot进行配置说明。
mybatis支持mysql的json格式
mysql-connector,mysql的驱动版本要大于等于5.1.40,否则json字段查询会发生乱码。
继承BaseTypeHandler自定义一个json类型处理器,放到一个handler包下,例:
package com.c.config.handler;
import com.alibaba.fastjson.JSONObject;
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 java.sql.*;
/**
* @description 用以mysql中json格式的字段,进行转换的自定义转换器,转换为实体类的JSONObject属性
*/
@MappedTypes(JSONObject.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class MySqlJsonHandler extends BaseTypeHandler {
/**
* 设置非空参数
* @param ps
* @param i
* @param parameter
* @param jdbcType
* @throws SQLException
*/
@Override
public 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
*/
@Override
public 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
*/
@Override
public JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
String sqlJson = rs.getString(columnIndex);
if (null != sqlJson){
return JSONObject.parseObject(sqlJson);
}
return null;
}
@Override
public JSONObject getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
String sqlJson = cs.getString(columnIndex);
if (null != sqlJson){
return JSONObject.parseObject(sqlJson);
}
return null;
}
}
配置自定义的类型处理器,配置文件中加入:
#配置mybaits自定义类型转换类所在的包
mybatis.type-handlers-package=com.c.config.handler
mapper的配置文件,利用属性typeHandler,例:
、、、
、、、
insert into table (rule) values (#{rule,jdbcType=OTHER,typeHandler=com.c.handler.config.MySqlJsonHandler})
实体类TrafficRestriction中rule字段类型为:com.alibaba.fastjson.JSONObject(当然也可以用其他工具的JSONObject)。配置完成后,保存、查询,rule字段就和普通字段一样,自动进行转换了。MySQL数据库中rule这一列,创建类型为:json。
mysql还支持基于json字段的查询。
mysql json mybatis_mybatis支持json,Spring boot配置相关推荐
- mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- springmvc配置ssl_Spring Mvc和Spring Boot配置Tomcat支持Https
SpringBoot配置支持https spring boot因为是使用内置的tomcat,所以只需要一些简单的配置即可. 1.首先打开命令行工具,比如cmd,输入以下命令 keytool -genk ...
- 超全、超详的Spring Boot配置讲解笔记
超全.超详的Spring Boot配置讲解笔记 springboot默认加载配置 SpringBoot使用两种全局的配置文件,全局配置文件可以对一些默认配置进行修改. application.prop ...
- Spring Boot配置log4j记录日志
转载请注明出处:Spring Boot配置log4j记录日志 我们在老的项目框架ssh,springMVC中都使用过log4j日志模块. 例如:java日志功能log4j模块的使用方法 Spring ...
- Spring Boot 配置元数据指南
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 遗失的拂晓 来源 | 公众号「锅外的大佬」 1. 概览 在编写 Spring Bo ...
- SpringBoot学习笔记-2:第二章 Spring Boot 配置
第二章 Spring Boot 配置 1.YAML 配置 SpringBoot 全局配置文件 application.properties application.yml YAML 以数据为中心,比 ...
- Spring Boot 架构中的国际化支持实践—— Spring Boot 全球化解决方案
背景 Spring Boot 主要通过 Maven 或 Gradle 这样的构建系统以继承方式添加依赖,同时继承了 Spring 框架中的优秀元素,减少了 Spring MVC 架构中的复杂配置,内置 ...
- spring boot配置详情
spring boot配置详情如下: 1.MVC相关 mvc spring.mvc.async.request-timeout设定async请求的超时时间,以毫秒为单位,如果没有设置的话,以具体 ...
- java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
最新文章
- linux 存储映射lun 给_如何在 Linux 上扫描/检测新的 LUN 和 SCSI 磁盘 | Linux 中国
- 广东2021高考成绩查询6,2021全国高考6月10日全部结束 预计最快6月23日可查高考成绩...
- 安装ESXi5.5遇到Relocating modules and starting up the kernel的处理
- cop2000计算机组成原理,COP2000计算机组成原理-南昌大学网络教学平台.doc
- 第一讲 ODE几何方法
- CNCF 官方大使张磊:什么是云原生?
- centos7系统根目录扩容
- ERROR: Check hive‘s usability failed, please check the status of your cluster问题解决
- 转:怎么判断自己在不在一家好公司?
- 平行哲学与智能技术:平行产业与智慧社会的对偶方程与测试基础
- BlockingQueue(阻塞队列)详解
- 王子救公主(DFS)
- 分块9题【参考hzw】
- HDU 2542 树上战争
- 【模型评价指标】分析模型评价常用指标
- Python模块和文件操作
- 土圭垚㙓数学课(二)视锥体八个顶点的计算方法
- bt客户端linux,Ubuntu 16.04安装BT客户端Transmission 2.84
- canvas仿知乎头像裁剪
- WEB集成管理与应用实例
热门文章
- 大学计算机课程第六章答案,大学计算机网络课程第六章.ppt
- python object单引号变成双引号_Python学习第163课--Linux命令行中的单引号和双引号...
- youcans 的 OpenCV 学习课—3.图像的创建与修改
- 南工院linux考试题库,操作系统复习题..doc
- avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机控制8段LED数码管同时显示 - AVR单片机8位数码管显示的程序实现(两种方法介绍)...
- flog和flag_FLAG:写作,英语和持续学习
- BatchNorm中forward未被调用原因
- 64位c语言调用32位glibc,glibc fclose源代码阅读及伪造_IO_FILE利用fclose实现任意地址执行...
- brython的问题
- [Vo. 1 No. 1] 高等代数一题[Sep. 19, 2013]