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類型轉(zhuǎn)換擴(kuò)展
*
* @author: xiaowei.go
* @date: 2019年11月20日
*
*/
@MappedTypes(JSONObject.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class MySqlJsonHandler extends BaseTypeHandler {
/**
* 設(shè)置非空參數(shù)
*
* @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()));
}
/**
* 根據(jù)列名,獲取可以為空的結(jié)果
*
* @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;
}
/**
* 根據(jù)列索引,獲取可以為空的結(jié)果
*
* @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;
}
/**
* 根據(jù)列索引,獲取可以為空的結(jié)果
*
* @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;
}
}
實(shí)體類
代碼段
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})
注冊(cè)Handler
2種方式
在application.yml聲明handler包
mybatis:
config-location: classpath:mybatis-config.xml
mapperLocations: classpath:mappers/*.xml
#配置mybaits自定義類型轉(zhuǎn)換類所在的包
type-handlers-package: com.magicpose.handler
在mybatis-config.xml中注冊(cè)該Handler
附:優(yōu)化版
既然自定義handler處理字段值,當(dāng)然可以直接轉(zhuǎn)化為java bean.
// 注冊(cè)器如下定義,其他方法參考返回為JSONObject類型的,轉(zhuǎn)化為Class
public class MySqlJsonHandler extends BaseTypeHandler{
private Class clazz;
}
使用mybatis-config.xml中注冊(cè)該Handler,增加 javaType屬性,指定該處理器轉(zhuǎn)換的java bean
記得實(shí)體類的屬性類型修改為對(duì)應(yīng)的java bean
總結(jié)
以上是生活随笔為你收集整理的spring mysql json_SpringBoot+MYSQL 配置支持json数据格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: image vb6 图片自适应_请问如何
- 下一篇: linux cmake编译源码,linu