MyBatis typeAliases 类型别名
说明:本文修订于2022年6月9日
1、MyBatis typeAliases 类型别名的作用
typeAliases,顾名思义,就是类别名的意思。类别名是Java类更短的名称,其存在的意义在于减少不必要的全限定类名。
备注:全限定类名就是类名全称,带包路径的用点隔开,例如: java.lang.String。非限定类名也叫短名,就是我们平时说的类名,不带包的,例如:String。
2、MyBatis typeAliases 类型别名的使用介绍
2.1、为Java类型设置一个别名(短的名字)
类型别名是为Java类型设置的一个短的名字。它只和XML配置有关,存在的意义仅在于用来减少类完全限定名的冗余,如下所示:
<typeAliases>
<typeAlias alias="user" type="cn.mybatis.domain.User"/>
</typeAliases>
当这样配置时,user
可以用在任何使用cn.mybatis.domain.User
的地方。但是,我们发现,如果类很多,每个类都这样配置一项显然很繁琐,所以下面给出了另外一个解决方案。
2.2、指定特定包里面的类的别名
<typeAliases>
<package name="cn.mybatis.domain"/>
</typeAliases>
每一个在包cn.mybatis.domain
中的Java Bean,在没有注解的情况下,会使用Bean的首字母小写的非限定类名来作为它的别名。比如cn.mybatis.domain.User
的别名为user
。若有注解,则别名为其注解值。
@Alias ("myuser")
public class User {
...
}
我们可以指定一个包,让mybatis去扫描它,以cn.mybatis.domain
这个包举例,mybatis扫描它时做了以下事情:这个包下的所有bean如果没有@Alias
注解,mybatis会自动以这个类的首字母小写作为名称为它注册,也就是说cn.mybatis.domain.User
以user
注册,如果类上面有@Alias
注解,就以这个注解的值myuser
作为bean的名称。
2.3、MyBatis 内置别名
MyBatis已经为许多常见的Java类型内建了相应的类型别名(见下表)。它们都是大小写不敏感的。
别名 | 映射的类型 |
_byte | byte |
_long | long |
_short | short |
_int | int |
_integer | int |
_double | double |
_float | float |
_boolean | boolean |
string | String |
byte | Byte |
long | Long |
short | Short |
int | Integer |
integer | Integer |
double | Double |
float | Float |
boolean | Boolean |
date | Date |
decimal | BigDecimal |
bigdecimal | BigDecimal |
object | Object |
map | Map |
hashmap | HashMap |
list | List |
arraylist | ArrayList |
collection | Collection |
iterator | Iterator |