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配置的全部內容,希望文章能夠幫你解決所遇到的問題。