(一)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)

其他地方不用改动。

结果输出信息: 男

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐