SSM开发实战教程(Spring+Spring MVC+MyBatis)
上QQ阅读APP看书,第一时间看更新

1.7.2 <typeAliases>标签

<typeAliases>标签的作用是为 Java 的 POJO 类起别名,如果不取别名,配置文件若要引用一个POJO实体类,必须输入全限定性类名,全限定性类名比较长,用了别名之后引用起来就简单多了。例如,实体类Student的全限定性类名是com.lifeng.entity.Student,未起别名之前,映射文件的select语句块若要引用POJO类Student必须使用全限定性类名,示例如下:

在主配置文件mybatis-config.xml中定义别名如下:

<typeAliases>

<typeAlias alias="Student" type="com.lifeng.entity.Student"/>

</typeAliases>

上面代码的意思是为全限定类名com.lifeng.entity.Student创建别名Student,定义了别名之后,映射文件中只须使用别名Student就能引用全限定类com.lifeng.entity.Student。这样上例代码可简化如下:

如果有多个类要使用别名,一种方法是逐个配置别名,多个<typeAlias>示例如下:

<typeAliases>

<typeAlias alias="Student" type="com.lifeng.entity.Student"/>

<typeAlias alias="Classes" type="com.lifeng.entity.Classes"/>

<typeAlias alias="Course" type="com.lifeng.entity.Course"/>

<typeAlias alias="Employee" type="com.lifeng.entity.Employee"/>

</typeAliases>

这样固然可以实现目的,但代码比较冗长,还有一个办法是通过自动扫描包的形式自定义别名,代码示例如下:

<typeAliases>

<typeAlias name="com.lifeng.entity"/>

</typeAliases>

这样配置后,MyBatis会自动扫描<typeAlias>节点的name属性指定的包com.lifeng.entity,并自动将该包下的所有实体类以首字母为小写的类名作为别名,例如它会自动给com.lifeng.entity. Student分配一个别名student,其他类推。

项目案例:使用别名简化了MyBatis映射文件。(项目源码参见本书配套资源:第1章/使用别名简化MyBatis映射文件/mybatis14)

实现步骤:

方法一:

(1)复制上一个项目mybatis13为mybatis14,修改主配置文件,添加别名如下:

(2)修改映射文件StudentMapper.xml,使用别名,代码如下:

(3)运行测试,结果不变。

方法二:

(1)修改主配置文件,用扫描包的方式配置别名,代码如下:

(2)修改映射文件StudentMapper.xml,使用别名,代码如下:

(3)运行测试,结果不变。