前言:
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">
注意:
xml配置文件中 可以根据约束添加xml中的标签
可以通过ctrl+/
显示可添加的标签。适用于Eclipse
标签1:properties
不常用 以后整个spring的时候有更好的方法
作用:
引用外部properties配置文件内容
属性:
resource 引用类路径下的资源
url:引入网络路径或者磁盘路径下的资源
<properties resource="dbconfig.properties"></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>
标签2:settings标签包含很多重要的设置项
举例:开启二级缓存:
<settings>
<setting name="cacheEnabled" value="true" />
</settings>
标签3: typeAliases 别名处理器 可以为java类型起别名 别名忽略大小写
原来:
<select id="getTeacherById" parameterType="integer" resultType="entity.Teacher">
ctrl+左键就可以定位到该类 其实比较方便
起了别名后就难找了
注意:
有个问题 typeAlias标签 还有位置问题 得放在proerties后面 而不是configuration后面
有三个方法起别名:
第一种:单个起别名
<typeAliases>
<typeAlias type="entity.Teacher" alias="ss"/>
</typeAliases>
type是要为起别名的类型全类名 默认是类名的小写teacher
alias:是指新的别名
第二种:批量起别名
<typeAliases>
<package name="entity"/>
</typeAliases>
package:为某个包下的所有类批量起别名
name:指定包名 以及下面所有的后代包的每一个类都起一个默认别名(类名小写)
第三种:使用注解
如果此时类名冲突怎么办?
使用@Alias注解为某个类指定新的别名:
@Alias("ss")
public class Teacher {
注意:得考虑是否起别名,有时候起别名反而更麻烦了
标签5:mappers:
作用:将sql映射文件绑定到全局配置中
<mappers>
<package name="dao" />
</mappers>
标签6:插件标签:plugins (具体的后面博客会介绍)
作用:
可以拦截四大对象 Executor之类的 动态代理可以实现额外操作
举例:分页插件:
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<property name="param1" value="value1"/>
</plugin>
</plugins>
标签7:环境变量标签:environments
mybatis可以配置多种环境
属性default
可以指定某种环境 如test测试和development开发快速切换
enviroment 配置一个具体的环信息 id代表当前标签唯一标识
必须有两个标签:
transactionManager:事务管理器 属性 type JDBC|MANAGED
dataSource:数据源 UNPOOLED|POOLED|JNDI
也可以自定义数据源。
不过environments是spring来配置的 不多了解了这里
标签8:自定义类型处理器:typeHandlers
使用自定义的类型处理器:可以修改枚举类保存获取数据库的值
<typeHandlers>
<typeHandler handler="typehandler.DiyTypeHandler" javaType="entity.Status"/>
</typeHandlers>
标签9:databaseIdProvider
作用:切换数据库类型
全局:
<environments default="dev_mysql">
<environment id="dev_mysql">
<transactionManager type="JDBC"></transactionManager>
<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>
<environment id="dev_oracle">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${orcl.driver}" />
<property name="url" value="${orcl.url}" />
<property name="username" value="${orcl.username}" />
<property name="password" value="${orcl.password}" />
</dataSource>
</environment>
</environments>
<!-- 5、databaseIdProvider:支持多数据库厂商的;
type="DB_VENDOR":VendorDatabaseIdProvider
作用就是得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql;
MySQL,Oracle,SQL Server,xxxx
-->
<databaseIdProvider type="DB_VENDOR">
<!-- 为不同的数据库厂商起别名 -->
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>