mysql json mybatis_mybatis支持json,Spring boot配置
mysql5.7版本以后支持原生json格式,基于Spring boot進(jìn)行配置說明。
mybatis支持mysql的json格式
mysql-connector,mysql的驅(qū)動(dòng)版本要大于等于5.1.40,否則json字段查詢會(huì)發(fā)生亂碼。
繼承BaseTypeHandler自定義一個(gè)json類型處理器,放到一個(gè)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格式的字段,進(jìn)行轉(zhuǎn)換的自定義轉(zhuǎn)換器,轉(zhuǎn)換為實(shí)體類的JSONObject屬性
*/
@MappedTypes(JSONObject.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class MySqlJsonHandler extends BaseTypeHandler {
/**
* 設(shè)置非空參數(shù)
* @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()));
}
/**
* 根據(jù)列名,獲取可以為空的結(jié)果
* @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;
}
/**
* 根據(jù)列索引,獲取可以為空的結(jié)果
* @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自定義類型轉(zhuǎn)換類所在的包
mybatis.type-handlers-package=com.c.config.handler
mapper的配置文件,利用屬性typeHandler,例:
、、、
、、、
insert into table (rule) values (#{rule,jdbcType=OTHER,typeHandler=com.c.handler.config.MySqlJsonHandler})
實(shí)體類TrafficRestriction中rule字段類型為:com.alibaba.fastjson.JSONObject(當(dāng)然也可以用其他工具的JSONObject)。配置完成后,保存、查詢,rule字段就和普通字段一樣,自動(dòng)進(jìn)行轉(zhuǎn)換了。MySQL數(shù)據(jù)庫中rule這一列,創(chuàng)建類型為:json。
mysql還支持基于json字段的查詢。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的mysql json mybatis_mybatis支持json,Spring boot配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zcmu-1982
- 下一篇: Mysql 给你100万条数据的一