mybatis-plus json字段使用typeHandler自动转换为List

mybatis-plus json字段使用typeHandler自动转换为List
一、实现思路
1.配置mybatis配置,注入handler
 mybatis-plus:
    typeHandlersPackage: com.power.common.core.handler
2.字段顶部增加注解
 @TableField(typeHandler = ListTypeHandler.class)

二、案例
@TableField(typeHandler = ListTypeHandler.class)
private List<Integer> payMode;

@TableField(typeHandler = ListTypeHandler.class)
private List<PowerCoeffVO> powerCoeff;


三、ListTypeHandler.java 源码
package com.power.common.core.handler;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@Slf4j
public class ListTypeHandler extends BaseTypeHandler<List> {
    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException {
        String content = CollUtil.isEmpty(parameter) ? null : JSONUtil.toJsonStr(parameter);
        ps.setString(i, content);
    }
    @Override
    public List getNullableResult(ResultSet rs, String columnName)
        throws SQLException {
        return parseValue(rs.getString(columnName));
    }
    @Override
    public List getNullableResult(ResultSet rs, int columnIndex)
        throws SQLException {
        return parseValue(rs.getString(columnIndex));
    }
    @Override
    public List getNullableResult(CallableStatement cs, int columnIndex)
        throws SQLException {
        return parseValue(cs.getString(columnIndex));
    }
    private List parseValue(String value) {
        if (StrUtil.isEmpty(value)) return new ArrayList<>();
        return JSONUtil.parseArray(value);
    }
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐