mybatis-plus json字段使用typeHandler自動轉換為List
mybatis-plus json字段使用typeHandler自動轉換為List
一、實現思路
1.配置mybatis配置,注入handlermybatis-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> {@Overridepublic 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);}@Overridepublic List getNullableResult(ResultSet rs, String columnName)throws SQLException {return parseValue(rs.getString(columnName));}@Overridepublic List getNullableResult(ResultSet rs, int columnIndex)throws SQLException {return parseValue(rs.getString(columnIndex));}@Overridepublic 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);}
}