Mybatis的枚举处理器

时间:2022-03-01 17:48:52

Mybatis有两个默认枚举处理器

EnumOrdinalTypeHandler

这个处理器负责将pojo里面的枚举类型转化为枚举的下标值存入数据库

假如pojo类有Sex这个枚举类的实例

public enum Sex {
MALE,FEMALE;
}

插入Sex.MALE时,数据库插入值为MALE的枚举下标值0,插入Sex.FEMALE时,插入值为FEMALE的枚举下标值1.

使用这个处理器的步骤

1.在Mybatis做如下配置

<typeHandlers>
<typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"
javaType="mytatis.enum2.Sex"
/>
</typeHandlers>

这样Mybatis遇到这个枚举就能对它做处理了。

2.pojo类里面类型为枚举类型,对应的数据库表字段为int类型

3.在mapper.xml中的<insert />语句枚举类型写成这样

#{sex, typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler}

resultmap写成这样

<result column="sex" property="sex" typeHandler=
"org.apache.ibatis.type.OrdinalTypeHandler"/>

EnumTypeHandler

同上,不同的是将数据库的int类型换成varchar类型,插入数据库的是枚举类成员的名称。

自定义枚举

1.将自定义枚举处理器加入到<typeHandlers />

2.实现TypeHandler接口重新实现如何处理映射关系。