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">
(二):configuration 标签
表示对整个MyBatis框架进行配置
< configuration > < /configuration >
(三):properties标签
属性resource 和 url
用来引用外部properties配置文件内容
属性:resource 引用类路径下的资源 ;url:引入网络路径或者磁盘路径下的资源
(四):Settings
settings标签可以进行一些公共的设置,比较重要的属性说明:
cacheEnabled
: 默认是true。 用于开启或关闭全部mapper的缓存行为。
lazyLoadingEnabled
:默认是false。用于开启或关闭懒加载(延迟加载)
useColumnLabel
: 默认是true。
defaultStatementTimeout
:默认未设置(支持正整数)。数据库超时设置。
mapUnderscoreToCamelCase
:默认是false。 A_COLUMN -> aColumn
- 开启 mapUnderscoreToCamelCase 可实现数据库的字段值 与实体类 值匹配 避免空值
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
- 如何设置输出SQL语句:
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
关于日志,都有级别:
(低) TRACE
-> DEBUG
-> INFO
-> ERROR
-> FATAIL
(高)
maven环境下导依赖:
在类路径下创建名为 log4j.properties
的配置文件:
# Global logging configuration
log4j.rootLogger=TRACE, stdout
# 细化到某个包下,某个类中的日志级别
log4j.logger.com.example.dao.UserMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
结果显示:
(五):typeAliases
内置别名:
所谓的别名,就是简化我们的配置的书写。有了别名以后,不需要再写 包名+ 类名 ,直接写别名。java.lang.Integer - int/integer
<select id="count" resultType="integer">
select count(1) from t_user
</select>
我们自己的类,要想简化配置,就需要使用 typeAliases
进行别名的注册。
<typeAliases>
<typeAlias type="com.example.domain.User" alias="user"/>
</typeAliases>
之前的做法:
进行注册:
注册成功后就可以使用别名替代
(六):typeHandlers
使用自定义的类型处理器:可以修改枚举类保存获取数据库的值
<typeHandlers>
<typeHandler handler="typehandler.DiyTypeHandler" javaType="entity.Status"/>
</typeHandlers>
(七)plugins 【插件配置】
可以拦截四大对象 Executor之类的 动态代理可以实现额外操作
举例:分页插件:
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<property name="param1" value="value1"/>
</plugin>
</plugins>
(八)environments 环境变量标签
1.在environments 里可指定多个环境即定义多个environment 标签
2.属性default可以指定某种环境 如test测试和development开发快速切换 default 不指定默认是第一个环境。
3.enviroment 配置一个具体的环信息 id代表当前标签唯一标识
4.transactionManager 的type 用于说明事务管理的类型:JDBC | MANAGED
5.dataSource:的type 说明 数据源 UNPOOLED | POOLED | JNDI
<!--environment可以指定多个环境即定义多个environment 标签 default 不指定默认**是第一个环境-->
<environments default="aa">
<environment id="aa">
<!-- type 用于说明事务管理的类型:JDBC|MANAGED -->
<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>
</environments>
(九):databaseIdProvider
用于多数据库支持。 我们知道不同的数据库,完成相同操作时,SQL语句有可能是不同的。
比如说分页:
- mysql 中使用
limit m , n
- oracle 中使用
ROWNUM
可以配置两个进行解决:
<environments default="dev_mysql">
<environment id="dev_mysql">
<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>
<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>
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle" />
</databaseIdProvider>
(十):mappers
作用:将Mapper.xml文件中的sql映射绑定到全局配置中
<!-- 管理 映射配置文件 UserMapper.xml -->
<mappers>
<mapper resource="UserMapper.xml"></mapper>
</mappers>