前言
上节课最后我们提到了两个重要的配置文件, 今天我们就先来讲讲mybatis的全局配置文件
这个配置文件包含了影响mybatis行为的设置和属性.文档的顶层结构如下:
properties
mybatis可以使用properties来引入外部properties配置文件的内容;Resource:引入类路径下的资源
url:引入网络/磁盘路径下的资源
如果属性不只一个地方进行了配置,那么在properties内指定的属性会优先; 再根据resource属性下读, 再根据url指定的路径读,并覆盖已读取的同名的属性
最后读取作为方法参数传递的属性,并覆盖已读取的
Settings
Setting 包含很多重要的设置项setting:用来设置每一个设置项 name:设置项名 value:设置项取值
比如: 是否开启自动驼峰命名规则(数据库列名A_COLUMN到aCloumn的类似映射)
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
typeAliases
typeAliases 别名处理器 简省工作量,可以为我们的java类型起别名
别名不区分大小写
typeAlias:为某个java类型起别名,方便引用某个类
type:指定要起别名的全类名;默认别名就是类名的小写;
alias:指定新的别名
<typeAlias type="com.kwy.mybatis.bean.Employee" alias="emp"/>
这种就是为单独某一个起别名, 但是如果 有很多的类,那工作量也是有点大的, 所以就有了批量的方式
批量起别名
package: 为某个包下的所有类批量起别名
name: 指定包名(为当前包以及下面所有的后代包的每一类都起一个默认别名(简单类名小写))
<typeAliases>
<package name="com.kwy.mybatis.bean"/>
</typeAliases>
还使用@Alias注解为某个类型指定新的别名
@Alias("emp")
Public class Employee{}
插件
插件是MyBatis提供的一个非常强大的机制,我们 可以通过插件来修改MyBatis的一些核心行为。插 件通过动态代理机制,可以介入四大对象的任何一个方法的执行。后面会有我会专门来介绍mybatis运行原理以及插件
Executor ParameterHandler ResultSetHandler StatementHandler
Environments
Environments:环境们,mybatis可以配置多种环境,default指定某种环境,可以打到快速切换环境(有点像maven的profile了哈)Environment:配置一个具体的环境信息
id:指定当前环境的唯一标识
transactionManager:事务管理器和dataSource必须得有
下面来说一下transactionManager
type:事务管理器的类型:
jdbc
managed
自定义事务管理器,实现TransactionFactory接口, type指定为全类名
DataSource:数据源;
type: 数据源类型 UNPOOLED | POOLED| JNDI
自定义数据源: 实现DataSourceFactory接口
databaseIdProvider
databaseIdProvider:支持多数据库厂商的
type="DB_VENDOR": VendorDatabaseIdProvider
作用就是得到数据库厂商的标识(驱动),mybatis就能根据数据库厂商标识来执行不同的sql;
<databaseIdProvider type="DB_VENDOR">
<!--为不同的数据库厂商起别名-->
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
</databaseIdProvider>
mappers
将我们写好的sql映射文件,注册到全局配置中
如何使用呢
mappers: 将sql映射注册到全局配置中
mapper:注册一个sql映射
resource:引用类路径下的sql映射文件
Eg: mybatis/mapper/xxx.xml
url: 引用网络路径活磁盘路径下的sql映射文件
Eg: file://workspace/xxx.xml
注册接口
class: 引用接口
1.有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
2.没有sql映射文件,所有sql都是利用注解写在接口上