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
@AllArgsConstructor
public 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));
}