1、MyBatis配置
<? xml version="1.0" encoding="utf-8"?>
<configuration> <!-- 配置 -->
<properties /> <!-- 属性 -->
<settings /> <!-- 设置 -->
<typeAliases /><!-- 别名 -->
<typeHandlers /><!-- 类型转换器 -->
<objectFactory /><!-- 对象工厂 -->
<plugins /> <!-- 插件 -->
<environments><!-- 配置环境 -->
<environment><!-- 环境变量 -->
<transactionManager /><!-- 事务管理器 -->
<dataSource /><!-- 数据源 -->
</environment>
</environments>
<databaseIdProvider /><!-- 数据库厂商标识 -->
<mappers /><!-- 映射器 -->
</configuration>
MyBatis配置项的顺序不能颠倒。
1.1 properties
properties属性可以给系统配置一些运行的参数,properties中的属性有resource和url,其中resource是引用类路径下资源而url是引用网络或者磁盘路径下的资源,其主要分为3中方式引用:
1》property子元素 name和value属性
2》properties文件
3》 程序代码传递
properties的3中引用方式的优先级,最优先的是使用程序传递的方式,其次是使用properties文件的方式,最后使用property子元素的方式,MyBatis会根据优先级来覆盖原先配置的属性值。
1.2 settings
settings是MyBatis中最复杂的配置,它能深刻影响MyBatis底层运行,大部分情况下使用默认值便可以运行,只需修改一些常用的规则,比如自动映射、驼峰命名映射、级联规则、是否启动缓存、执行器(Executor)等
1.3 typeAliases
typeAliases分为系统定义别名和自定义别名,在MyBatis中别名不区分大小写,其主要分为3中方式:
1》typeAliase type属性指定要起别名的类型全类名,默认别名就是类名小写 ;alias指定新别名
2》package 为某个包下的所有类批量起别名,name属性指定包名(为当前包下以及下面所有后代包的每一个斗气一个默认的别名)
3》@Alias注解 在类上注解,避免因为别名重名导致的异常
1.4 typeHandler
在MyBatis中存在系统定义typeHandler和自定义typeHandler,MyBatis会根据javaType和数据库的jdbcType来决定采用哪个typeHandler处理这些转换规则。
1.5 ObjectFactory
当创建结果集时,MyBatis会使用一个对象工厂来完成创建这个结果集实例,在默认情况下MyBatis会使用其定义的对象工厂——DefaultObjectFactory来完成对应的工作,也可以注册自定义的ObjectFactory。
1.6 plugins
plugins主要插件分为Executor、ParameterHandler、ResultSetHandler、StatementHandler
1.7 environments
在MyBatis中运行环境主要的作用是配置数据库信息,它可以配置多个数据库,它下面又分为两个可配置的元素:事务管理器(transactionManager)和数据源(dataSource)。
1.7.1 transactionManager
transactionManager提供了两个实现类,它需要实现接口Transaction。
于是事务管理器配置成为以下两种方式:
<transactionManager type="JDBC"/>
<transactionManager type="MANAGED"/>
public interface Transaction{
Connection getConnection() throws SQLException;
void commit() throws SQLException;
void rollback() throws SQLException;
void close() throws SQLException;
Integer getTimeout() throws SQLException;
}
1.7.2 dataSource
dataSource中有三种数据源分别是UNPOOLED、POOLED和JNDI
UNPOOLED采用非数据库池的管理方式,每次请求都会打开一个新的数据库连接,所以创建会比较慢。
POOLED利用池的概念将JDBC的Connection对象组织起来,它开始会有一些空置,并且已经连接好的数据库连接,所以请求时,无须再建立和验证。
1.8 databaseIdProvider
<databaseIdProvider type="DB_VENDOR">
<property name="Oracle" value="oracle"/>
<property name="MySQL" value="mysql"/>
<property name="DB2" value="db2"/>
</databaseIdProvider>
1.9 mappers
将sql映射注册到全局配置文件中,其中有四种方式:
1》 resource 引用类路径下的sql映射文件
2》 url 引用网络路径或者磁盘路径下的sql映射文件
3》 class 引用接口的全路径 ,如果有sql映射文件时必须和接口同名并且放在同一个目录下,如果没有sql映射文件时可以使用注解形式。
4》package用包名引入引射器,如果有sql映射文件时必须和接口同名并且放在同一个目录下,如果没有sql映射文件时可以使用注解形式。