MyBatis 学习记录03--07/11--全局配置文件详解
一、引入提示
1. 引入dtd约束文件:
1)连网时,可以直接点击下载文件
2)没连网时
1.1
Referenced Libraries — mybatis-3.4.1.jar — org-apache.ibatis-builder.xml
- mybatis-3-config.dtd—全局配置文件
- mybatis-3-mapper.dtd—sql映射配置文件
1.2 找到dtd文件
在电脑中找到mybatis-3.4.1.jar包
用压缩软件打开
org–apache–ibatis–builder–xml–解压出来“mybatis-3-config.dtd”和“mybatis-3-mapper.dtd”两个文件
1.3 引入
1.3.1 打开全局配置文件,复制url
1.3.2 window–Perference–XML–XML Catalog–Add
1.3.3 属性
key:url
keyType:URI
Location:File System—解压后放的地址
二、标签
1. properties
1)作用
2) 属性
3) 实现
1)在conf包下 new – file –
File Name: dbconfig.properties
文件中将全局配置文件中的datasource内容粘贴过来
2)全局配置文件
因为在类路径下,使用resource来绑定properties文件
value值均用${}来动态绑定properties中的名字
2. settings
1)成分:
1.1 settings:包含多个设置项
1.2setting:每一个设置项
2)设置名:
2.1 mapUnderscoreToCamelCase 驼峰设置
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
设置后,下划线后的第一个字母大写
db字段名:A_COLLUMN -----成功映射> java属性名:aColumn
db字段名:last_name -----成功映射> java属性名:lastName
不用再在sql语句中起别名
3. typeAliases
注意:别名不区分大小写
1)作用:
别名处理器,为java type起一个别名,不需要每次都写全类名
之前在sql映射文件中总是要写全类名
2) typeAlias:为每一个java type起别名
<typeAliases>
<typeAlias type="com.atguigu.mybatis.bean.Employee" alias="employee">
</typeAliases>
**alias如果不写的话,只写type,默认值就是全类名的小写employee
**type:制定药企别名的java type的全类名
此时sql映射配置文件中的resultType可以使用别名
3) package:为某个包下的所有java type起别名
当前包,以及下面所有后代包的每一个java type都起
拥有一个默认别名:类名的小写
下面两种写法“employee”和“Employee”均可
注意:别名不区分大小写
问题:包与子包均有一个类叫Employee时,会报错
4. typeHandlers类型处理器
可以进行多种处理,例如:
java的string如何与db的varchar进行识别转换
<typeHandlers>
<typeHandler>
</typeHandlers>
3. plugins插件
1)作用:
intercept calls:拦截–实为动态代理
2)4大插件:
Executor:执行器
Parameterhandler:参数处理器
ResultSetHandler:结果集处理器
Statementhandler:sql语句处理器
4. environments可以配置多种环境
1)environment:
每一个envir可以配置一个具体的环境信息,但必须与transactionManager和dataSource两个标签同时使用
1.1 id:
当前环境的唯一标识,default可与其绑定
1.2 transactionManager标签:
type=“JDBC”
type=“MANAGED”—JEE服务器来管理实务
type=“实现类全类名”—自定义事务管理器—implememts TransactionFactory
1.3 dataSource标签:
type=“POOLED”—shiyong mybatis自带的连接池
type=“UNPOOLED”—每一次增删改查均会从数据库中拿一次新的连接,不用连接池
type=“JNDI”
type=“实现类全类名”—自定义dataSource----implements DataSourceFactory
2)default:
动态指定使用某种环境,可以达到快速切换环境
开发环境:使用本地数据库,进行开发调试
测试环境:使用专门调试数据库
<environments default="test">
//或切换成"development"
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED"/>
</environment>
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED"/>
</environment>
</environment>
例子1:
例子2:
value里的内容与properties里面的内容保持一致
以后均由spring来完成
5. databaseIdProvider:支持多种数据库厂商
1. property:
为不同的数据库厂商起别名
2. type:
全名:VendorDatabaseIdProvider
得到数据库厂商的标识(驱动自带),mybatis可根据不同的数据库厂商来执行不同的sql
3. 实例:
3.1 全局配置文件写代码:
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
<property name="ORACLE" value="oracle"/>
<property name="SQL SERVER" value="sqlserver"/>
</databaseIdProvider>
3.2 导入oracle驱动到lib包下:
在电脑中找Oracle下载的包
Oracle–product—11.2.0—dbhome_1—jdbc—lib—ojdbc6.jar—复制到lib包下—build path
3.3 sql映射配置文件写代码:
3.4 修改properties文件: mysql和oracle
3.5 bug修改—mysql映射配置文件
3.6 mysql映射配置文件中sql语句的几种写法
1)不带标记的(1)
2)带标记的(2,3)
例如,mysql中会默认加载1和2,但会自动执行有标记的2,舍弃没有标记的1
6. mappers:!!!将sql映射配置文件注册到全局配置文件中
每一个mapper负责注册一个sql映射配置文件
1)注册配置文件
1.1 resource:引用类路径下的sql映射配置文件
1.2 url:引用网络路径或磁盘路径下的sql映射配置文件
url = “file:///var/mappers/AuthorMapper.xml”
2)注册接口
2.1使用sql映射文件
2.1.1将接口Interface EmployeeMapper.java文件的全类名放在class中
2.1.2接口文件 EmployeeMapper.java与sql映射配置文件EmployeeMapper.xml一定要
同名
且
放在同一个目录中
2.2没有sql映射文件,使用注解
不用再为接口写sql映射配置文件并注册进去,而是在接口中直接加入注解
2.2.1 新建Interface
new–Interface–“EmployeeMapperAnnotation.java”
2.2.2 全局配置文件中使用class属性
2.2.3 测试类MyBatisTest.java
getMapper中写接口的类名
3)总结
建议写sql映射配置文件,方便抽象化和修改
比较重要的活着比较复杂的dao接口,写sql映射配置文件(1)
不重要活着简单的dao接口,可以使用注解方式(2)
修改:企业版写法
使用sql映射配置文件时——传统写法:接口与sql配置文件放在同一个目录下
可以在conf包下新建一个包(与接口所在的包同名)
src与conf等包都属于类路径,两个包中的文件都是lib包下的同一级中
因此src包下的dao包与conf包下的dao包其实是同一个东西,效果同上图,只是一种好看的写法
4)批量注册package
<mappers>
<package name="接口所在的包名">
</mappers>
此时sql映射配置文件与接口同包名,同包下,同名。
可以使用上面的企业版写法,效果相同。