- 定义枚举类
public enum EntityEnum {
ACCURATE(0), INACCURATE(1), UNCERTAIN(2);
private int value;
public void setValue(int value) {
this.value = value;
}
EntityEnum(int value){
this.value = value;
}
public int getValue() {
return value;
}
public static EntityEnum value2Object(int value){
for (EntityEnum e : EntityEnum.values()) {
if (e.getValue() == value){
return e;
}
}
throw new IllegalArgumentException("Illegal EntityEnum value: " + value + ". ");
}
}
- 定义枚举类处理器
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
public class EntityEnumTypeHandler extends BaseTypeHandler<EntityEnum> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, EntityEnum parameter, JdbcType jdbcType) throws SQLException {
ps.setInt(i, parameter.getValue());
}
@Override
public EntityEnum getNullableResult(ResultSet rs, String columnName) throws SQLException {
return EntityEnum.value2Object(rs.getInt(columnName));
}
@Override
public EntityEnum getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return EntityEnum.value2Object(rs.getInt(columnIndex));
}
@Override
public EntityEnum getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return EntityEnum.value2Object(cs.getInt(columnIndex));
}
}
- 给相应的属性配置类型处理器
<resultMap id="BaseResultMap" type="***">
<result column="evaluation" jdbcType="TINYINT" property="evaluation"
typeHandler="EntityEnumTypeHandler" />
</resultMap>
- 在编辑操作的sql也需要配置,以插入为例
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="***" useGeneratedKeys="true">
insert into table (colume_1, colume_2, colume_3)
values (#{colume_1,jdbcType=VARCHAR},
#{colume_2, typeHandler=com.healsci.icu.pojo.vo.enumeration.EntityEnumTypeHandler},
#{colume_3,jdbcType=VARCHAR})
</insert>