[MyBatis]--(2)总配置文件--(3)typeAliases元素

版权声明: https://blog.csdn.net/zhaoyaxuan001/article/details/80783293

声明:

Author:赵志乾

Date:2018-6-23

Declaration:All Right Reserved!!!


背景知识:

1、名称

   名称是一个应用很广泛的概念。如一个变量会有名称、一个方法会有名称、一个类型同样会有名称。名称的存在意义主要是起到标识作用,这种作用无论是作用于人也好,还是作用于机器,在应用和生活中都不可或缺。

2、别名

    给人印象最深刻的就是外国友人的姓名,要多长有多长、要多难记就有多难记。为此,出现了各式各样的简称,其本质就是别名。别名存在的意义也是显而易见,就是方便人们进行记忆、书写和交流。但对于设备而言,其运行需要一套固定的规则,它不在乎名称的长短、是否难记和阅读,它在乎的仅仅是规则是否被满足。于是在人和设备之间便产生了一道沟壑,而别名和原名称之间的对应关系便成为了架设于沟壑之上的一座桥梁。


typeAliases元素

1、来源

    MyBatis作为Java应用中成熟的ORM框架,用于桥接POJO和数据库表数据,所以其不可避免的要使用的Java类类型,而Java类型的全限定名通常会比较长(层级比较多),这会使得某一个类型被多次使用时,需要把全限定名写上若干遍。作为一个重度懒癌患者,自然不希望这种事情发生在自己身上。于是Mybatis框架提供了一个typeAliases元素,用于存放原名称和别名间的对应关系,之后在MyBatis上下文中需要该类型的地方使用简短明了的别名即可。

    对于一些常用的类型,MyBatis为其内置了别名,称作系统定义别名。当我们需要这些类型时,直接使用内置的别名即可。而对于其他的类型,就需要用户自己在typeAlias元素中进行定义了,这些别名称作用户自定义别名。

2、系统定义别名

    系统定义别名见下表。其中,对于支持数组类型的,在其别名后加"[]"即可表示对应的数组类型别名。



3、用户自定义别名

    每个应用中,通常会定义属于该应用特有的类型,于是MyBatis框架允许用户自己定义类型的别名。方法很简单,使用typeAlias子元素的alias和type属性即可,示例如下:

<typeAliases>
    <typeAlias alias="role" type="com.zzq.model.Role"/>  
</typeAliases>

    上述的配置方式虽然简单,但需要配置的类型很多时,这种配置方式会显得很繁琐。于是MyBatis框架便提供了自动扫描功能。其对应的配置方法也很简单,首先使用package子元素的name属性制定对应的包,然后在需要定义别名的类上使用注解Alias即可。如下:

<typeAliases>
    <package name="com.zzq.model"/>  
</typeAliases>

package com.zzq.model;

@Alias("role")
public class Role{
    //code
}

注:通过package子元素指定要扫描的包,但Alias注解并不是必须的,因为在扫描的过程中,如果使用了Alias注解,会使用其value值来定义别名,否则将类名首字母小写后作为别名。

注:要避免别名的重复。


邮箱:[email protected]

参考资料:《深入浅出MyBatis技术原理与实践》--杨开振

猜你喜欢

转载自blog.csdn.net/zhaoyaxuan001/article/details/80783293