0
点赞
收藏
分享

微信扫一扫

MybatisPlus如何跟JSON数据做映射

MaxWen 2021-12-29 阅读 102
日记本

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

    @TableField(el = "data,typeHandler=path.FastJsonTypeHandler")
    private JSONObject data;

@TableName(autoResultMap = true)

举报

相关推荐

0 条评论