MybatisPlus如何跟JSON数据做映射
2020-09-17 本文已影响0人
AbstractCulture
这段是网上找的,不是自创
FastJsonTypeHandler
@MappedTypes({JSONObject.class})
@MappedJdbcTypes({JdbcType.VARCHAR})
public class FastJsonTypeHandler implements TypeHandler<JSONObject>{
@Override
public JSONObject getResult(ResultSet rs, String columnName) throws SQLException {
String string = rs.getString(columnName);
JSONObject json = JSONObject.parseObject(string);
return json;
}
@Override
public JSONObject getResult(ResultSet rs, int columnIndex) throws SQLException {
String string = rs.getString(columnIndex);
JSONObject json = JSONObject.parseObject(string);
return json;
}
//@param cs 当前的CallableStatement执行后的CallableStatement 
@Override
public JSONObject getResult(CallableStatement cs, int columnIndex) throws SQLException {
String string = cs.getString(columnIndex);
JSONObject json = JSONObject.parseObject(string);
return json;
}
/**
* 用于定义在Mybatis设置参数时该如何把Java类型的参数转换为对应的数据库类型
* @param ps 当前的PreparedStatement对象
* @param i 当前参数的位置
* @param parameter 当前参数的Java对象
* @param jdbcType 当前参数的数据库类型
* @throws SQLException
*/
@Override
public void setParameter(PreparedStatement ps, int i, JSONObject parameter, JdbcType jdbcType) throws SQLException {
if(parameter == null){
ps.setString(i, null);
return;
}
String json = JSON.toJSONString(parameter);
ps.setString(i, json);
}
}
Entity
path写你自己的包路径
@TableField(el = "data,typeHandler=path.FastJsonTypeHandler")
private JSONObject data;