(一)EnumOrdinalTypeHandler
mybatis-config.xml
<typeHandlers>
<typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler" javaType="com.mzs.entity.SexEnum"/>
</typeHandlers>
javaType得指定枚举类(我特好奇,使用枚举类的时候,mybatis为什么不能自动匹配到枚举typehandler)
枚举类(getter and setter 读者需要自己填写)
public enum SexEnum {
male(0, "男"),
female(1, "女");
private int id;
private String name;
SexEnum(int id, String name) {
this.id = id;
this.name = name;
}
实体类(同样的,getter and setter 省略了)
public class Users {
private Integer id;
private String username;
private String password;
private Date hireDate;
private SexEnum sex;
}
mysql数据库
mysql> select * from users;
+----+----------+----------+---------------+------+
| id | username | password | hireDate | sex |
+----+----------+----------+---------------+------+
| 1 | tom | tom | 1537605481252 | 0 |
| 2 | selina | | 1537605481252 | 1 |
| 3 | peanut | zk | 1537605481252 | 0 |
+----+----------+----------+---------------+------+
3 rows in set (0.01 sec)
UsersMapper.xml部分代码(同名的接口,读者自行补充)
<resultMap id="usersMapper" type="users">
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<result column="hireDate" property="hireDate"/>
<result column="sex" property="sex"/>
</resultMap>
<select id="getUser" parameterType="int" resultMap="usersMapper">
select id, username, password, hireDate, sex FROM users where id = #{id}
</select>
(注:也可以在resultmap result标签下填写
typeHandler="org.apache.ibatis.type.EnumOrdinalTypeHandler"
这样mybatis-config.xml中的typehandler就可以省略了。)
测试类(com.mzs.test.TestDemo)
Logger logger = Logger.getLogger("com.mzs.test.TestDemo");
String resource = "mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
UsersMapper1 usersMapper1 = sqlSession.getMapper(UsersMapper1.class);
Users user = usersMapper1.getUser(1);
logger.info(user.getSex().getName());
结果输出信息: 男
(二)EnumTypeHandler
mybatis-config.xml
<typeHandlers>
<typeHandler handler="org.apache.ibatis.type.EnumTypeHandler" javaType="com.mzs.entity.SexEnum"/>
</typeHandlers>
mysql数据库(注意:sex字段的值发生了变化)
mysql> select * from users;
+----+----------+----------+---------------+------+
| id | username | password | hireDate | sex |
+----+----------+----------+---------------+------+
| 1 | tom | tom | 1537605481252 | male |
| 2 | selina | | 1537605481252 | female |
| 3 | peanut | zk | 1537605481252 | male |
+----+----------+----------+---------------+------+
3 rows in set (0.01 sec)
其他地方不用改动。
结果输出信息: 男