typeHandlers
枚举类型转换器typeHandlers
下标转换
typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler
A(2, “男”), B(3, “女”); 和id没有任何关系
0 -> A, B -> 女
A -> 0 ,女 -> B
名称转换
typeHandler=org.apache.ibatis.type.EnumTypeHandler
A(1, “男”), B(0, “女”);
A -> 男, B -> 女
男 -> A ,女 -> B
业务转换
这里指定id,可以指定任意属性的转换
A(3, “男”), B(0, “女”);
A -> 3, B -> 0
3 -> A ,女 -> 0
public class SexEnumHandler extends BaseTypeHandler<SexEnum> {
private static final Logger logger = LoggerFactory.getLogger(SexEnumHandler.class);
@Override
public void setNonNullParameter(PreparedStatement ps, int i, SexEnum parameter, JdbcType jdbcType)
throws SQLException {
ps.setLong(i, parameter.getId());
}
@Override
public SexEnum getNullableResult(ResultSet rs, String columnName) throws SQLException {
Short id = rs.getShort(columnName);
return getSexById(id);
}
@Override
public SexEnum getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
Short id = rs.getShort(columnIndex);
return getSexById(id);
}
@Override
public SexEnum getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
Short id = cs.getShort(columnIndex);
return getSexById(id);
}
private SexEnum getSexById(Short id) {
SexEnum[] values = SexEnum.values();
for (SexEnum sexEnum : values) {
if (sexEnum.getId() == id) {
return sexEnum;
}
}
return null;
}
}