MyBatis学习-(五)resultType自定义别名

本文最后更新于:January 20, 2022 pm

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

目录

MyBatis 中文文档:https://mybatis.org/mybatis-3/zh/index.html

Mybatis提供的对JAVA类型自定义别名。有两种方式。

步骤:

    1. 在Mybatis主配置文件中使用typeAliases标签声明别名。
    1. 在mapper文件中使用,resultType=”自定义别名”

注意:在Mybatis主配置文件中加标签时,不能随便加,需要按照一定的位置进行加。

1
<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>

按照规定的顺序放在相应的位置。这个也可以自行点开主配置文件中的configuration进行查看。

这里的typeAliases需要放在settings后。

方式一

  • type:java类型的全限定名称。
  • alias:自定义别名。

在主配置文件中加入:

1
2
3
<typeAliases>
<typeAlias type="com.tothefor.Study1.entity.Person" alias="pp"></typeAlias>
</typeAliases>

原来的dao接口中的mapper文件为:

1
2
3
<select id="selectBlog" resultType="com.tothefor.Study1.entity.Person">
select * from Blog where id = #{id}
</select>

现在就可以写为:

1
2
3
<select id="selectBlog" resultType="pp">
select * from Blog where id = #{id}
</select>

优缺点

  • 优点:可以自定义名称。
  • 缺点:每个类型必须单独定义。

方式二

  • name:包名。mybatis会把这个包中的所有类名作为别名。

在主配置文件中:

1
2
3
<typeAliases>
<package name="com.tothefor.Study1.entity"/>
</typeAliases>

原来的dao接口中的mapper文件为:

1
2
3
<select id="selectBlog" resultType="com.tothefor.Study1.entity.Person">
select * from Blog where id = #{id}
</select>

现在就可以写为:

1
2
3
<select id="selectBlog" resultType="Person">
select * from Blog where id = #{id}
</select>

优缺点

  • 优点:使用方便,可以一次性给多个类定义别名。
  • 缺点:别名不能自定义,必须是类名。当不同包下有相同类时,使用时会出错。