前面有写到spring+springmvc+mybatis深入学习及搭建(二)——mybatis原始dao开发和mapper代理开发
mybatis的全局配置文件sqlmapconfig.xml,配置内容和顺序如下:
properties(属性)
setting(全局配置参数)
typealiases(类名别名)
typehandlers(类名处理器)
objectfactory(对象工厂)
plugins(插件)
environments(环境集合属性对象)
environment(环境子属性对象)
transationmanager(事务管理)
datasource(数据源)
mappers(映射器)
1.properties(属性)
需求:
将数据库连接参数单独配置在db.properties中,只需要在sqlmapconfig.xml中加载db.properties的属性值。在sqlmapconfig.xml中就不需要对数据库连接参数硬编码。
将数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其它xml可以引用该db.properties。
在classpath下定义db.properties文件:
1
2
3
4
|
jdbc.driver=com.mysql.jdbc.driver jdbc.url=jdbc:mysql: //localhost:3306/mybatisdemo jdbc.username=root jdbc.password= |
在sqlmapconfig.xml加载属性文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<?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中陪可以配置一些属性名和属性值,此处的优先加载 --> <!-- <property name= "driver" value= "" /> --> </properties> <!-- 和spring整合后,environments配置将废除 --> <environments default = "development" > <environment id= "development" > <!-- 使用jdbc事务管理,事务控制由mybatis管理 --> <transactionmanager type= "jdbc" /> <!-- 数据库连接池,由mybatis管理 --> <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特性:
注意:mybatis将按照下面的顺序来加载属性:
(1)在properties元素体内定义的属性首先被读取。
(2)然后会读取properties元素中resourse或url加载的属性,它会覆盖已读取的同名属性。
(3)最后读取parametertype传递的属性,它会覆盖已读取的同名属性。
所以这里可能就会存在一个问题:假如usermapper.xml中的有一个statement的入参名为name,
而db.properties中也有一个参数名叫name。
那最终usermapper.xml中的select会读取到name=root,而不是用户传入的值。
建议:
不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。
在properties文件中定义属性名要有一定的特殊性,如:xxx.xxx.xxx,jdbc.url,jbdc.username。
2.settings(全局参数配置)
mybatis框架在运行时可以调整一些运行参数。
比如:开启二级缓存、开启延迟加载......
全局参数将会影响mybatis的运行行为。
3.typealiases(别名)重点
3.1需求
在mapper.xml中,定义很多的statement,而statement需要parametertype指定输入参数的类型,需要resulttype指定输出结果的映射类型。
如果在指定类型时输入类型全路径,不方便进行开发。可以针对parametertype或resulttype指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。
3.2mybatis默认支持别名
3.3自定义别名
3.3.1单个别名定义
1
2
3
4
|
<!-- 单个别名定义: --> <typealiases> <typealias type= "joanna.yan.mybatis.entity.user" alias= "user" /> </typealiases> |
引用别名:
1
2
3
|
<select id= "finduserbyid" parametertype= "int" resulttype= "user" > select * from user where id=#{id} </select> |
3.3.2批量定义别名(常用)
1
2
3
4
5
6
7
|
<!-- 批量别名的定义: package :指定包名,mybatis会自动扫描包中的pojo类,自定义别名,别名就是类名(首字母大写或小写都可以) --> <typealiases> < package name= "joanna.yan.mybatis.entity" /> <!-- < package name= "其它包名" /> --> </typealiases> |
4.typehandlers(类型处理器)
mybatis中通过typehandlers完成jbdc类型和java类型的转换。通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义。
5.mappers(映射配置)
5.1通过resource加载单个文件
1
2
3
4
5
|
<!-- 加载映射文件 --> <mappers> <!-- 通过resource方法一次加载一个映射文件 --> <mapper resource= "mapper/usermapper.xml" /> </mappers> |
5.2通过mapper接口加载单个mapper
1
2
3
4
5
6
7
8
9
|
<!-- 加载映射文件 --> <mappers> <!-- 通过mapper接口加载单个映射配置文件 遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中; 以上规范的前提是:使用的是mapper代理方法; --> <mapper class = "joanna.yan.mybatis.mapper.usermapper" /> </mappers> |
按照上边的规范,将mapper.java和mapper.xml放在一个目录,且同名。
5.3批量加载mapper(推荐使用)
1
2
3
4
5
6
7
|
<mappers> <!-- 批量加载映射配置文件,mybatis自动扫描包下的mapper接口进行加载; 遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中; 以上规范的前提是:使用的是mapper代理方法; --> < package name= "joanna.yan.mybatis.mapper" /> </mappers> |
以上所述是小编给大家介绍的spring+springmvc+mybatis深入学习及搭建(三)之mybatis全局配置文件解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://www.cnblogs.com/Joanna-Yan/p/6874672.html