代码托管在github上【https://github.com/Damaer/Mybatis-Learning】的mybatis-04
在前面的例子中(三)Mybatis使用工具类读取配置文件以及从属性读取DB信息,我们改进了两点:使用工具类获取sqlSession以及从属性中读取数据库信息,那么我们下面需要改进的是别名,也趁这个机会介绍一下别名的作用。
其实在我们实际开发中,大多数情况下,一个mapper.xml文件对应的是对一个对象的操作,当前的mapper如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper1">
<insert id="insertStudent" parameterType="bean.Student">
insert into student(name,age,score) values(#{name},#{age},#{score})
</insert>
</mapper>
我们可以看出parameterType有时候会写很长很长,每写一个sql我们就要使用parameterType传值或者使用返回类型,意思就是这个parameterType太长了,有没有什么办法可以让我们就写类名就可以了,其实是有的!!!那就是别名,mybatis可以让我们起一个别名给它,别名定义是在mybatis.xml主配置文件中。注意别名标签应该定义在后面,在前面,顺序不能颠倒。<typeAliases></typeAliases>
这个标签里面可以定义很多别名
<!-- 别名,对数据对象操作全名太长,需要使用别名 -->
<typeAliases>
<typeAlias type="bean.Student" alias="Student"/>
</typeAliases>
我们在上面的别名中的意思是给bean包下Student这个类起了一个别名,名字叫Student,那么我们就可以使用了,很简单:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper1">
<insert id="insertStudent" parameterType="Student">
insert into student(name,age,score) values(#{name},#{age},#{score})
</insert>
</mapper>
但是要是bean里面有很多类,我们是不是要写很多别名呢?其实不用,我们可以观察到<typeAliases></typeAliases>
这个标签下面有一个<package/>
标签,他的作用就体现出来了。将指定的包中的类的简单类名当做别名。
<typeAliases>
<!-- 配置一个类的别名 -->
<!-- <typeAlias type="com.aphysia.beans.Student" alias="Student"/> -->
<!--直接使用类名即可,对于整个包的路径配置(别名),简单快捷 -->
<package name="bean"/>
</typeAliases>
贴代码
在这里贴一下代码,代码结构如下:
bean包下的Student类:
package bean;
public clas