MyBatis 学习之路其二:利用 mybatis 的配置使项目结构更合理

在上一篇文章里,我们利用 mybatis 写了一个简单的小程序。现在,我们需要对这个项目进行配置,使得项目的结构更合理,更具备维护性。

一、properties 属性

在上篇的关于 Role 的程序里,我们在 property 设置了 jdbc 的相关信息,这些 property 是放置在 dataSource 里的。property 表示的是一个键-值对应关系,当我们需要用到某个值时,只需要引用它的键就可以了。

除了类似于 dataSource 等元素里内部的 property,我们也可以在 properties 元素里添加我们常用的 property。可以把 properties 理解为一个 map。property 就是里面的键-值对,这么做的目的是为了方便我们后面使用。

现在,我们利用 properties 对 mybatis-config 稍加修改:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6   <!-- 配置 properties -->
 7   <properties>
 8     <property name="database.driver" value="com.mysql.cj.jdbc.Driver"/>
 9     <property name="database.url" value="jdbc:mysql://192.168.52.128:3306/javatest?serverTimezone=UTC"/>
10     <property name="database.username" value="root"/>
11     <property name="database.password" value="Root123#"/>
12   </properties>
13 <!-- environment 描述的数据库 -->
14   <environments default="development">
15     <environment id="development">
16     <!-- 表示事务管理器采用的事 mybatis 的 jdbc 管理器方式 -->
17       <transactionManager type="JDBC"/>
18       <dataSource type="POOLED">
19         <property name="driver" value="${database.driver}"/>
20         <property name="url" value="${database.url}"/>
21         <property name="username" value="${database.username}"/>
22         <property name="password" value="${database.password}"/>
23       </dataSource>
24     </environment>
25   </environments>
26   <mappers>
27     <mapper resource="mybatisTest/mapper/RoleMapper.xml"/>
28   </mappers>
29 </configuration>

可以看出,dataSource 里的 property 的 vlaue 全部是引用,其对应的值时在 properties 里设置的。

那么,能不能更进一步,把 dataSource 所需的值独立成一个文件?其实,大多数项目都是这么做的,所以我们经常会在各个项目中看到 jdbc.properties 文件。

现在,我们就把 dataSource  所需的值放在一个新的文件里,文件名为 jdbc.properties ,凡是独立出来的 properties 文件都是这个后缀。

database.driver = com.mysql.cj.jdbc.Driver
database.url = jdbc:mysql://192.168.52.128:3306/javatest?serverTimezone=UTC
database.username = root
database.password = Root123#

然后,我们就可以在 mybatis-config 导入这个文件,然后使用它的变量:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6   <!-- 配置 properties -->
 7   <properties resource="jdbc.properties"/>
 8 <!-- environment 描述的数据库 -->
 9   <environments default="development">
10     <environment id="development">
11     <!-- 表示事务管理器采用的事 mybatis 的 jdbc 管理器方式 -->
12       <transactionManager type="JDBC"/>
13       <dataSource type="POOLED">
14         <property name="driver" value="${database.driver}"/>
15         <property name="url" value="${database.url}"/>
16         <property name="username" value="${database.username}"/>
17         <property name="password" value="${database.password}"/>
18       </dataSource>
19     </environment>
20   </environments>
21   <mappers>
22     <mapper resource="mybatisTest/mapper/RoleMapper.xml"/>
23   </mappers>
24 </configuration>

这样以后修改 jdbc 相关参数,直接在 jdbc.properties 里修改即可。

二、typeAliases 别名

在 RoleMapper.xml 里,我们为了保证映射准确,必须要使用类的全限定名,如果一个类会被使用多次,或者名字很长,都会很麻烦,而我们可以通过别名的方式来避免这种情况

首先,在 mybatis-config.xml 我们需要通过 <typeAilases> 元素来设置:

  <typeAliases>
    <typeAlias alias = "role" type = "mybatisTest.model.Role" />
  </typeAliases>

之后,我们就可以使用别名来代替全限定名:

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper
3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5 <mapper namespace="mybatisTest.mapper.RoleMapper">
6   <select id="getRole" resultType="role">
7     select age from Role where id = #{id}
8   </select>
9 </mapper>

如果,想要设置别名的类太多,我们可以通过下面的方式,给整个包里的类取别名,其别名自动设置为类名的首字母小写格式:

<typeAliases>
    <package name = "mybatisTest.model"/>
</typeAliases>
posted @ 2018-09-29 17:33  crazy_runcheng  阅读(253)  评论(0编辑  收藏  举报