mybatis-plus json字段使用typeHandler自动转换为List
【代码】mybatis-plus json字段使用typeHandler自动转换为List。
·
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);
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)