mybatis学习(三)----优化Mybatis配置文件中的配置
一.把连接数据库的配置单独放在一个properties文件中
前面我们是把数据库的连接信息放在了mybatis-config.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>
<!--配置数据库环境,可以有多个environment,default值是其中一个environment的id值-->
<environments default="developement">
<environment id="developement">
<!--配置事务管理器,JDBC和MANAGED两种,JDBC可以进行回滚和提交-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源,type=[UNPOOLED | POOLED| JNDI], POOLED表示实现简单的数据池连接,连接可以复用-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</dataSource>
</environment>
</environments>
<!--resource值是映射文件所在的路径-->
<!--class值是映射接口类所在的路径-->
<mappers>
<!--mapper resource="mapping/userMapper.xml"></mapper>-->
<mapper class="me.gacl.map.UserMapperI"></mapper>
</mappers>
</configuration>
其实我们完全可以将数据库的连接配置信息写在一个properties文件中,然后在conf.xml文件中引用properties文件,具体做法如下:
首先建一个db.properties文件,文件内容如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8
username=root
password=123456
然后在mybatis-config.xml中,引用db.properties配置文件中的属性,如下:
<?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>
<!--引用db.properties文件-->
<properties resource="db.properties"></properties>
<!--配置数据库环境,可以有多个environment,default值是其中一个environment的id值-->
<environments default="developement">
<environment id="developement">
<!--配置事务管理器,JDBC和MANAGED两种,JDBC可以进行回滚和提交-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源,type=[UNPOOLED | POOLED| JNDI], POOLED表示实现简单的数据池连接,连接可以复用-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
</dataSource>
</environment>
</environments>
<!--resource值是映射文件所在的路径-->
<!--class值是映射接口类所在的路径-->
<mappers>
<!--mapper resource="mapping/userMapper.xml"></mapper>-->
<mapper class="me.gacl.map.UserMapperI"></mapper>
</mappers>
</configuration>
二.为实体类定义别名,简化sql映射xml文件的引用
以前在sql中引用实体类时,需要写上实体类的全类名(包名+类名),如:
<select id="getUser" parameterType="int" resultType="me.gacl.domain.User">
select * from users where id=#{id}
</select>
resultType="me.gacl.domain.User"这里写的实体类User的全类名me.gacl.domain.User,每次都写这么一长串内容挺麻烦的,而我们希望能够简写成下面的形式
<select id="getUser" parameterType="int" resultType="_User">
select * from users where id=#{id}
</select>
parameterType="_User"这样写就简单多了,为了达到这种效果,我们需要在conf.xml文件中为实体类="me.gacl.domain.User"定义一个别名为"_User",具体做法如下:
在conf.xml文件中<configuration></configuration>标签中添加如下配置:
<!--配置User类的别名-->
<typeAliases>
<typeAlias type="me.gacl.domain.User" alias="_User"></typeAlias>
</typeAliases>
这样就可以为me.gacl.domain.User类定义了一个别名为_User,以后_User就代表了me.gacl.domain.User类,这样sql映射xml文件中的凡是需要引用me.gacl.domain.User类的地方都可以使用_User来代替,这就达到了一个简化实体类引用的目的。
除了可以使用<typeAlias type="me.gacl.domain.User" alias="_User"/>这种方式单独为某一个实体类设置别名之外,我们还可以使用如下的方式批量为某个包下的所有实体类设置别名,如下:
<!--配置User类的别名-->
<typeAliases>
<!--配置User类的别名为"_User"-->
<!--<typeAlias type="me.gacl.domain.User" alias="_User"></typeAlias>-->
<!--配置me.gacl.domain包下所有类的别名,默认是类名即"User"-->
<package name="me.gacl.domain"></package>
</typeAliases>
<package name="me.gacl.domain"/>就表示为这个包下面的所有实体类设置别名。MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名,比如me.gacl.domain.User这个实体类的别名就会被设置成User。
注意:typeAliases必须在environments和mappers标签之前,不然会报错

完整的mybatis-config.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>
<!--引用db.properties文件-->
<properties resource="db.properties"></properties>
<!--配置User类的别名-->
<typeAliases>
<!--配置User类的别名为"_User"-->
<typeAlias type="me.gacl.domain.User" alias="_User"></typeAlias>
<!--配置me.gacl.domain包下所有类的别名,默认是类名即"User"-->
<!--<package name="me.gacl.domain"></package>-->
</typeAliases>
<!--配置数据库环境,可以有多个environment,default值是其中一个environment的id值-->
<environments default="developement">
<environment id="developement">
<!--配置事务管理器,JDBC和MANAGED两种,JDBC可以进行回滚和提交-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源,type=[UNPOOLED | POOLED| JNDI], POOLED表示实现简单的数据池连接,连接可以复用-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
</dataSource>
</environment>
</environments>
<!--resource值是映射文件所在的路径-->
<!--class值是映射接口类所在的路径-->
<mappers>
<!--mapper resource="mapping/userMapper.xml"></mapper>-->
<mapper class="me.gacl.map.UserMapperI"></mapper>
</mappers>
</configuration>
mybatis学习(三)----优化Mybatis配置文件中的配置的更多相关文章
- 【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置
[转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的con ...
- Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突
原文链接:http://www.cnblogs.com/xdp-gacl/p/4264301.html http://www.cnblogs.com/xdp-gacl/p/4264425.ht ...
- 转:MyBatis学习总结(Mybatis总结精华文章)
http://www.cnblogs.com/xdp-gacl/tag/MyBatis%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/ 当前标签: MyBatis学习总结 ...
- 【转】MyBatis学习总结(一)——MyBatis快速入门
[转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...
- MyBatis学习总结(七)——Mybatis缓存(转载)
孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...
- 【转】MyBatis学习总结(七)——Mybatis缓存
[转]MyBatis学习总结(七)——Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualC ...
- 【MyBatis学习15】MyBatis的逆向工程生成代码
1. 什么是逆向工程 mybatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需 ...
- Prometheus 配置文件中 metric_relabel_configs 配置--转载
Prometheus 配置文件中 metric_relabel_configs 配置 参考1:https://www.baidu.com/link?url=YfpBgnD1RoEthqXOL3Lgny ...
- MyBatis的学习总结三:优化MyBatis配置文件中的配置
一.优化Mybatis配置文件conf.xml中数据库的信息 1.添加properties的配置文件,存放数据库的信息:mysql.properties具体代码: driver=com.mysql.j ...
- MyBatis学习总结(三)——优化MyBatis配置文件中的配置(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013548.html 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置 ...
随机推荐
- 20180428 xlVBA自动设置成绩条行高
'自动设置行高 传入工作表Sht 和 每页打印的行数RowsInOnePage Public Sub AutoSetRowHeight(ByVal Sht As Worksheet, Optional ...
- p1473 Zero Sum
搜索,最后判断一下是否结果为0就行. #include <iostream> #include <cstdio> #include <cmath> #include ...
- CF-825E Minimal Labels 反向拓扑排序
http://codeforces.com/contest/825/problem/E 一道裸的拓扑排序题.为什么需要反向拓扑排序呢?因为一条大下标指向小下标的边可能会导致小下标更晚分配到号码,导致字 ...
- 非常可乐 HDU - 1495
大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但see ...
- Misha and Palindrome Degree CodeForces - 501E (回文串计数)
大意: 给定字符串, 求多少个区间重排后能使原串为回文串. 先特判掉特殊情况, 对于两侧已经相等的位置之间可以任意组合, 并且区间两端点至少有一个在两侧相等的位置处, 对左右两种情况分别求出即可. # ...
- SQL SERVER 子查询使用Order By;按In排序
[子查询]使用order by percent * from table order by id) a 这时发现结果没有按id排序,需要将100 percent 改成 99.999 percent 或 ...
- leetcode-algorithms-5 Longest Palindromic Substring
leetcode-algorithms-5 Longest Palindromic Substring Given a string s, find the longest palindromic s ...
- ECharts 报表事件联动系列一:刷新页面
本示例实现了以下功能: 1.点击刷新按钮,仅刷新柱状图,而不是整个页面 2.点击柱状内容刷新柱状图,并更新title 3.点击X轴,Y轴更新title,并弹出alert. 源码代码如下: <!D ...
- 【LeetCode】Permutation全排列
1. Next Permutation 实现C++的std::next_permutation函数,重新排列范围内的元素,返回按照 字典序 排列的下一个值较大的组合.若其已经是最大排列,则返回最小排列 ...
- Oracle awr报告生成操作步骤
1.登录主机切换到oracle用户 ssh root@192.168.220.128 su - oracle 2.以sysdba身份登录数据库 sqlplus / as sysdba 3.执行@?/r ...