一般来说,类的全限定名包含包名,显得很长,所以MyBatis使用简写的方式,减少类完全限定名的多余部分。例如:
<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author"/>
<typeAlias alias="Blog" type="domain.blog.Blog"/>
<typeAlias alias="Comment" type="domain.blog.Comment"/>
<typeAlias alias="Post" type="domain.blog.Post"/>
<typeAlias alias="Section" type="domain.blog.Section"/>
<typeAlias alias="Tag" type="domain.blog.Tag"/>
</typeAliases>
使用这个配置,“Blog”可以任意用来替代“domain.blog.Blog”所使用的地方。
对于普通的 Java 类型,有许多内建的类型别名。它们都是大小写不敏感的,由于重载
的名字,要注意原生类型的特殊处理。
1、系统定义别名
常用的系统定义的别名如下表:
别名 | 映射的类型 |
---|---|
_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 |
2、自定义别名
1、配置文件中的typeAliases属性
<!--别名:pojo对象的别名 -->
<typeAliases>
<!--对类单独进行别名设置 -->
<typeAlias alias="user" type="com.pojo.User"></typeAlias>
<typeAlias alias="enterprice" type="com.pojo.Enterprice"></typeAlias>
<!-- 对包进行扫描,可以批量进行别名设置,设置规则是:获取类名称,将其第一个字母变为小写 -->
<package name="com.daily.pojo"/>
</typeAliases>
2、通过TypeAliasRegistry的registerAlias方法(给多个包下相同类名设置别名)
这种方式跟与获取系统配置的方式一样,都要获取到TypeAliasRegistry对象,然后用其registerAlias方法进行注册。
/**
* 总定义别名
*/
public static void setTypeAlias() {
SqlSession sqlSession = getSqlSession();
TypeAliasRegistry typeAliasRegistry = sqlSession.getConfiguration().getTypeAliasRegistry();
//代码方式配置别名
typeAliasRegistry.registerAlias("user1",com.pojo2.User.class);
}
3、通过注解
在对应包的对应类上面使用@Alias(“别名”)即可:
package com.pojo2;
import org.apache.ibatis.type.Alias;
@Alias("user1")
public class User {
private Integer id;
private String userName;
private String pwd;
}
注意:在自定义别名的时候,记得区分同名类,最好就是不要写重复的类名,避免冲突。