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配置相关推荐

  1. mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码

    之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...

  2. springmvc配置ssl_Spring Mvc和Spring Boot配置Tomcat支持Https

    SpringBoot配置支持https spring boot因为是使用内置的tomcat,所以只需要一些简单的配置即可. 1.首先打开命令行工具,比如cmd,输入以下命令 keytool -genk ...

  3. 超全、超详的Spring Boot配置讲解笔记

    超全.超详的Spring Boot配置讲解笔记 springboot默认加载配置 SpringBoot使用两种全局的配置文件,全局配置文件可以对一些默认配置进行修改. application.prop ...

  4. Spring Boot配置log4j记录日志

    转载请注明出处:Spring Boot配置log4j记录日志 我们在老的项目框架ssh,springMVC中都使用过log4j日志模块. 例如:java日志功能log4j模块的使用方法 Spring ...

  5. Spring Boot 配置元数据指南

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 遗失的拂晓 来源 | 公众号「锅外的大佬」 1. 概览 在编写 Spring Bo ...

  6. SpringBoot学习笔记-2:第二章 Spring Boot 配置

    第二章 Spring Boot 配置 1.YAML 配置 SpringBoot 全局配置文件 application.properties application.yml YAML 以数据为中心,比 ...

  7. Spring Boot 架构中的国际化支持实践—— Spring Boot 全球化解决方案

    背景 Spring Boot 主要通过 Maven 或 Gradle 这样的构建系统以继承方式添加依赖,同时继承了 Spring 框架中的优秀元素,减少了 Spring MVC 架构中的复杂配置,内置 ...

  8. spring boot配置详情

    spring boot配置详情如下:  1.MVC相关  mvc  spring.mvc.async.request-timeout设定async请求的超时时间,以毫秒为单位,如果没有设置的话,以具体 ...

  9. java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...

    之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...

最新文章

  1. linux 存储映射lun 给_如何在 Linux 上扫描/检测新的 LUN 和 SCSI 磁盘 | Linux 中国
  2. 广东2021高考成绩查询6,2021全国高考6月10日全部结束 预计最快6月23日可查高考成绩...
  3. 安装ESXi5.5遇到Relocating modules and starting up the kernel的处理
  4. cop2000计算机组成原理,COP2000计算机组成原理-南昌大学网络教学平台.doc
  5. 第一讲 ODE几何方法
  6. CNCF 官方大使张磊:什么是云原生?
  7. centos7系统根目录扩容
  8. ERROR: Check hive‘s usability failed, please check the status of your cluster问题解决
  9. 转:怎么判断自己在不在一家好公司?
  10. 平行哲学与智能技术:平行产业与智慧社会的对偶方程与测试基础
  11. BlockingQueue(阻塞队列)详解
  12. 王子救公主(DFS)
  13. 分块9题【参考hzw】
  14. HDU 2542 树上战争
  15. 【模型评价指标】分析模型评价常用指标
  16. Python模块和文件操作
  17. 土圭垚㙓数学课(二)视锥体八个顶点的计算方法
  18. bt客户端linux,Ubuntu 16.04安装BT客户端Transmission 2.84
  19. canvas仿知乎头像裁剪
  20. WEB集成管理与应用实例

热门文章

  1. 大学计算机课程第六章答案,大学计算机网络课程第六章.ppt
  2. python object单引号变成双引号_Python学习第163课--Linux命令行中的单引号和双引号...
  3. youcans 的 OpenCV 学习课—3.图像的创建与修改
  4. 南工院linux考试题库,操作系统复习题..doc
  5. avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机控制8段LED数码管同时显示 - AVR单片机8位数码管显示的程序实现(两种方法介绍)...
  6. flog和flag_FLAG:写作,英语和持续学习
  7. BatchNorm中forward未被调用原因
  8. 64位c语言调用32位glibc,glibc fclose源代码阅读及伪造_IO_FILE利用fclose实现任意地址执行...
  9. brython的问题
  10. [Vo. 1 No. 1] 高等代数一题[Sep. 19, 2013]