为什么要起别名?
我们在使用mybatis时需要书写xml文件。
使用paramType和resultType标记语句的入参和返回类型。每次都需要填入类型的全类名,当方法很多时这很麻烦,还容易写错。这时我们可以使用别名的方式:
<mapper namespace="com.jxl.Mapper.UserManageMapper">
<select id="getUserList" resultType="com.jxl.mybatis.User">
select * from user
</select>
</mapper>
怎样起别名?
起别名有两种方式
第一种:是在Mybatis核心配置文件中的<configuration></configuration>主标签添加typeAlias标签置顶某个类的别名,alias=“别名”,配置代码如下:
<typeAliases>
<typeAlias type="com.jxl.mybatis.User" alias="user"/>
</typeAliases>
//type里是自己的全限定类名 alias是起的别名
typeAlias标签起别名配置后Mybatis核心配置文件示例代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--定义别名-->
<typeAliases>
<typeAlias type="com.jxl.mybatis.User" alias="user"/>
</typeAliases>
<!--自定义类型处理器-注册-->
<typeHandlers>
<typeHandler handler="com.jxl.mybatis.typeHandlers.DataTypeHandlers"/>
</typeHandlers>
<!--数据源环境-->
<environments default="devDatasource">
<environment id="devDatasource">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/local_test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
注意:起别名的配置要注意顺序,顺序不对会提示错误。
第二种:包扫描的方式,将指定包下所有的类进行扫描,默认将类名作为别名,大小写不区分,但推荐小写。注意package的写法,name的值是类所在包的路径,禁止携带通配符。
例如:com.jxl.mybatis.domain.*;默认使用的是defaultVSF扫描器,注意:在整合springboot时,这种扫描方式会出问题。配置代码如下:
<!--扫描包起别名-->
<typeAliases>
<package name="com.jxl.mybatis.domain"/>
</typeAliases>
包扫描起别名配置后Mybatis核心配置文件示例代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--扫描包起别名-->
<typeAliases>
<package name="com.jxl.mybatis"/>
</typeAliases>
<!--自定义类型处理器-注册-->
<typeHandlers>
<typeHandler handler="com.jxl.mybatis.typeHandlers.DataTypeHandlers"/>
</typeHandlers>
<!--数据源环境-->
<environments default="devDatasource">
<environment id="devDatasource">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/local_test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
配置完之后xml文件可以这样写,省略了包名:
<mapper namespace="com.jxl.Mapper.UserManageMapper">
<select id="getUserList" resultType="user">
select * from user
</select>
</mapper>