MyBatis学习记录(4):MyBatis配置文件的优化
2016-04-16 00:41
513 查看
properties属性
之前几篇文章里的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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="dongjiong" /> </dataSource> </environment> </environments> </configuration>
数据库相关的信息直接写在配置文件里,其实可以将数据库的配置信息单独写一个db.properties文件,然后在Mybatis配置文件里通过properties属性引用这个文件。如下所示:
db.properties文件:
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test jdbc.username=root jdbc.password=dongjiong
在mybatisConfig.xml文件里引用该文件:
mybatisConfig.xml文件:
<?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> <properties resource="db.properties"/> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> </configuration>
由于在properties属性里还可以定义属性,如下:
<properties resource="db.properties"> <property name="" value=""></property> <property name="" value=""></property> </properties>
所以这就涉及到属性加载顺序的问题。
MyBatis 将按照下面的顺序来加载属性:
在 properties 元素体内定义的属性首先被读取。
然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。
最后读取parameterType传递的属性,它会覆盖已读取的同名属性。
因此,通过parameterType传递的属性具有最高优先级,resource或 url 加载的属性次之,最低优先级的是 properties 元素体内定义的属性。
typeAliases(类型别名)
之前在userMapper.xml配置文件里,对于select,delete等语句我们需要指定parameterType,resultType的映射类型,例如像下面那样:<!-- 根据id查询得到一个user对象--> <select id="selectUserById" parameterType="String" resultType="com.mybatis.domain.User"> SELECT * FROM t_user WHERE uid=#{id} </select> <!-- 添加一个用户 --> <insert id="insertUser" parameterType="com.mybatis.domain.User"> INSERT INTO t_user VALUES(#{uid},#{uname},#{upassword}) </insert>
当映射类型是实体类时,我们要写出全路径,这样名字就很长,所以可以通过typeAliases属性指定别名,用别名替代全路径。
在mybatisConfig.xml文件里加入下面的代码:
<properties resource="db.properties" /> //定义别名 <typeAliases> <typeAlias type="com.mybatis.domain.User" alias="User"></typeAlias> </typeAliases>
然后在userMapper.xml文件里就可以使用这个别名了:
<!-- 根据id查询得到一个user对象--> <select id="selectUserById" parameterType="String" resultType="User"> SELECT * FROM t_user WHERE uid=#{id} </select> <!-- 添加一个用户 --> <insert id="insertUser" parameterType="User"> INSERT INTO t_user VALUES(#{uid},#{uname},#{upassword}) </insert>
这只是给单个类的全路径指定别名,当工程很大时,如果每个类都写一句<typeAlias type=”…” alias=”…” />来指定别名,还是很麻烦,能不能批量指定别名呢??
这就要请出来typeAliases中的package属性了。如下:
<typeAliases> <package name ="com.mybatis.domain" /> </typeAliases>
package可以给一个包下的所有实体类指定别名,每个类的默认别名就是类名,例如com.mybatis.domain.User的别名就是User。首字母大小写都可以。
mappers(映射器)
在mybatisConfig.xml文件里加载userMapper.xml文件,之前我们写成下面的形式:<mappers> <!-- 注册userMapper.xml文件 --> <mapper resource="com/mybatis/mapping/userMapper.xml"/> </mappers>
同样的,如果实体类很多的话,能不能批量加载呢??答案是可以!不过要遵循一些规范:
要像MyBatis学习记录(3)里那样用Mapper代理的方法开发DAO层接口
mapper文件的名字要和接口类的名字一样。比如接口类名字叫UserMapper.java,mapper文件的名字就应该叫UserMapper.xml
UserMapper.java 与UserMapper.xml两个文件要在一个目录(包)中
如图:
遵循以上规范后,我们就可以用mapper属性下的package属性批量加载mapper文件了。
<mappers> <!-- 批量加载 --> <package name="com.mybatis.mapper" /> </mappers>
相关文章推荐
- MySQL 优化
- Google排名优化的几个影响因素
- DB2优化(简易版)
- Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架
- C#中尾递归的使用、优化及编译器优化
- 对优化Ruby on Rails性能的一些办法的探究
- 优化Ruby脚本效率实例分享
- Asp编码优化技巧
- 如何监测和优化OLAP数据库
- mysql -参数thread_cache_size优化方法 小结
- 深入学习SQL Server聚合函数算法优化技巧
- MySQL常见的底层优化操作教程及相关建议
- 详解mysql的limit经典用法及优化实例
- 数据库学习建议之提高数据库速度的十条建议
- oracle数据库sql的优化总结
- SQL语句性能优化(续)
- SQL语句优化提高数据库性能
- SQL优化经验总结
- SQL优化技巧指南
- SQL Server优化50法汇总