mybatis将java枚举类型转换成数据库TINYINT类型

  1. 定义枚举类
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 + ". ");
	}
}
  1. 定义枚举类处理器
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));
	}
}
  1. 给相应的属性配置类型处理器
  <resultMap id="BaseResultMap" type="***">
    <result column="evaluation" jdbcType="TINYINT" property="evaluation"
            typeHandler="EntityEnumTypeHandler" />
  </resultMap>
  1. 在编辑操作的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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值