枚举类型转换器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; } }