美文网首页
MybatisPlus如何跟JSON数据做映射

MybatisPlus如何跟JSON数据做映射

作者: AbstractCulture | 来源:发表于2020-09-17 18:38 被阅读0次

这段是网上找的,不是自创

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 ![输入图片说明](https://static.oschina.net/uploads/img/201709/05153912_SK1d.png "在这里输入图片标题")
    @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;

@TableName(autoResultMap = true)

相关文章

网友评论

      本文标题:MybatisPlus如何跟JSON数据做映射

      本文链接:https://www.haomeiwen.com/subject/eskryktx.html