MyBatis 配置 typeAliases 详解

2022-07-09 09:28:37

前言参考

之前的MyBatis 中 mybatis-config 配置文件详解记了一下 MyBatis 中的核心配置文件各个标签的作用和使用场景,这篇文章细说一下配置文件中 typeAliases 标签的详细使用。

标签介绍

在MyBatis的SQL映射配置文件中,常使用 parameterType、resultType之类的参数设置SQL语句的输入/输出参数,一般参数都是一个Java类型的数据,有基本数据类型或封装类型,但是一般都要声明该类型的全路径名称,例如“java.lang.String”、“java.util.HashMap”或者“com.pjb.mybatis.po.User”,如下:

代码示例

<select id="findUserByUsername" parameterType="java.lang.String" resultType="cn.com.mybatis.pojo.User">
    SELECT* FROM USER WHERE username LIKE '%${value}%'</select>

那么,是否可以像在Java类中一样,在某个地方声明该类的全路径名称,然后在使用是仅使用该类型的别名呢?通过设置MyBatis的全局配置文件中的typeAliases属性,就可以为SQL映射文件中的输入/输出参数设置类型别名,然后在SQL映射配置文件中指定输入/输出参数类型时使用别名,配置如下:

<!--别名设置--><typeAliases><typeAliasalias="user"type="cn.com.mybatis.pojo.User"/><typeAliasalias="str"type="java.lang.String"/></typeAliases>

此时在SQL映射配置文件中可以使用别名来指定输入/输出参数的类型:

<selectid="findUserByUsername"parameterType="str"resultType="user">
    SELECT * FROM USER WHERE username LIKE '%${value}%'</select>

当然,一般会将JavaBean类型的封装类放置在一个包下面(如本示例中的 com.pjb.mybatis.po 包)一个一个配置别名很繁琐,所以MyBatis提供了批量定义别名的方法,指定包名即可,程序会为该包下的所有包装类加上别名。c程序定义别名的规则就是对应包装类的类名首字母变为小写。配置如下:

<!--别名设置--><typeAliases><packagename="cn.com.mybatis.pojo"/></typeAliases>

别名也可以使用注解来实现,实现方式就是在需要指定别名的类声明头添加“@Alias”注解,其中的参数就是该类对应的别名,代码如下:

@Alias("user")publicclassUser{//其他代码}

MyBatis已经为Java的常见类型默认指定了别名,可以直接使用。这里要注意的是,有一些基本数据类型和包装类数据类型的名称一样(除了包装类中首字母大写的类),故在基本数据类型的前面加上下划线“_”作为区分。

MyBatis中常见类型别名:

在这里插入图片描述
在这里插入图片描述
所以,当需要为映射参数配置别名时,就可以使用typeAliases属性。在日常开发中经常使用实体类型的别名来简化配置文件,以便提高开发效率。

  • 作者:笑尘~Y
  • 原文链接:https://blog.csdn.net/weixin_47609799/article/details/124627738
    更新时间:2022-07-09 09:28:37