1.实现类型转化器
package com.afei.mybatis.interception;import com.afei.mybatis.enums.EmpStatusEnum;import org.apache.ibatis.type.JdbcType;import org.apache.ibatis.type.MappedTypes;import org.apache.ibatis.type.TypeHandler;import java.sql.CallableStatement;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;/** * 枚举类型转化 * @author shihengfei */public class EmpStatusEnumTypeHandler implements TypeHandler<EmpStatusEnum> { @Override public void setParameter(PreparedStatement preparedStatement, int i, EmpStatusEnum empStatusEnum, JdbcType jdbcType) throws SQLException { preparedStatement.setInt(i,empStatusEnum.getCode()); } @Override public EmpStatusEnum getResult(ResultSet resultSet, String s) throws SQLException { String code = resultSet.getString(s); // 容错 if (resultSet.wasNull()) { return EmpStatusEnum.UP; } // 结果转化 EmpStatusEnum empStatusEnum = EmpStatusEnum.EMP_STATUS_MAP.get(Integer.valueOf(code)); return empStatusEnum; } @Override public EmpStatusEnum getResult(ResultSet resultSet, int i) throws SQLException { int code = resultSet.getInt(i); EmpStatusEnum empStatusEnum = EmpStatusEnum.EMP_STATUS_MAP.get(code); return empStatusEnum; } @Override public EmpStatusEnum getResult(CallableStatement callableStatement, int i) throws SQLException { int code = callableStatement.getInt(i); EmpStatusEnum empStatusEnum = EmpStatusEnum.EMP_STATUS_MAP.get(code); return empStatusEnum; }}
2.枚举
package com.afei.mybatis.enums;import com.google.common.collect.Lists;import lombok.AllArgsConstructor;import lombok.Getter;import java.util.Map;import java.util.stream.Collectors;/** * @author shihengfei */@Getter@AllArgsConstructorpublic enum EmpStatusEnum { /** */ UP(100,"上"), DOWN(200,"下"), LEFT(300,"左"); Integer code; String msg; /** * 枚举code与枚举对象map */ public static Map<Integer, EmpStatusEnum> EMP_STATUS_MAP = Lists.newArrayList(values()).stream().collect(Collectors.toMap(EmpStatusEnum::getCode, re -> re));}