1、本篇博文的背景和目的
目前我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。阐述了MVC架构模式和三层架构,明晰了在Web项目中的普遍编码层次,回顾了JDBC连接数据库,建立了使用MyBatis和MySQL的Maven项目,解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,回顾了MyBatis执行SQL语句的过程和使用到的一些重要类和接口,记录了将固定化的代码整合到一个工具类MyBatisUtil中,以减少代码量。记录了dao层接口的实现以及为什么要实现它。记录了MyBatis动态代理和使用动态代理的要求以及使用了动态代理生成的实现类。记录了MyBatis框架下传参的五种方法,占位符#和$。本篇博客记录一下如何自定义别名。
2、我的上一篇博文
上一篇博文我记录的是$占位符的具体使用方法,感兴趣的读者可以移步查阅,链接如下所示:
3、MyBatis中什么是别名,为什么会用到别名
这里的别名指的是:某一种数据类型的别名。这里提到的数据类型,可以是JAVA中自带的基本数据类型,也可以是自己编写的实体类。
在MyBatis的mapper.xml文件中,parameterType属性和resultType属性的值都是某一种数据类型的全限定路径名称,但是全限定路径名称太长了,所以,MyBatis允许给每一种数据类型都起一个别名,使用别名来代替它的全限定路径名称。
MyBatis已经帮我们给每一种基本数据类型起好了对应的别名,这个可以在MyBatis的官方手册中查询到。
但是,我们自定义的实体类怎么给别名呢?这就需要我们自己配置了。
4、在MyBatis的总配置文件中自定义别名
如果我们需要给自定义实体类配置别名,那么就需要在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>
<!-- 下面设置一下日志,一定要在最上面, 其实我们可以按着Ctrl键,鼠标左击configuration标签,进去看它规定的标签顺序-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!-- 下面我们自己声明一些别名,这里有两种语法格式-->
<typeAliases>
<!-- 第一种语法格式 type:java类型的全限定名称,一般都是自定义java类型
alias:别名
这种方法就是比较麻烦。
-->
<typeAlias type="com.dcy.domain.Student" alias="Student"></typeAlias>
<!-- 第二种语法格式 name:包名 MyBatis会自动将这个包中的所有类名作为别名,并且不区分大小写 -->
<package name="com.dcy.domain"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<!-- 下面是配置一下数据源,其实后面我们就不这样配置了,都在.yml文件中配置-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong&allowMultiQueries=true"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 用于指定其它mapper.xml文件的位置,也就是路径
这个路径是从target/classes根路径开始的,也即是com/**/**/这样的
使用注意:使用 / 分隔路径;一个mapper标签指定一个文件;
-->
<mappers>
<mapper resource="com/dcy/dao/StudentDao.xml"></mapper>
</mappers>
</configuration>
注意看我代码中的注释。
这里说一个需要注意的点:与自定义配置别名有关的typeAliases标签必须写在settings标签之后。MyBatis的总配置文件中标签之间是有顺序的,这个顺序我们可以看到。方法是:Windows操作系统下,按着Ctrl键,左键点击configuration标签,进入到如下页面:
上面就是标签之间的先后顺序。
配置别名有两种语法格式:1、使用<typeAlias>标签,此标签的type属性值是某数据类型的全限定路径名称,alias属性值是别名。2、使用<package>标签,只有一个name属性。name属性值是某一个包的全限定路径名称。使用这种方法默认会将此包中的所有类名作为这个类的别名。
最后,我们就可以使用别名,例如下面的使用方法:
<select id="queryStudentOrderByColume" resultType="Student"><!-- 这里使用了别名-->
select * from student order by ${colume}
</select>