MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。
文件结构:
configuration 配置
properties 属性 : 一般是连接数据库的
可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来配置
settings 设置: 可以改变MyBatis运行时的行为
<settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <setting name="useGeneratedKeys" value="false"/> <setting name="autoMappingBehavior" value="PARTIAL"/> <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="defaultStatementTimeout" value="25"/> <setting name="defaultFetchSize" value="100"/> <setting name="safeRowBoundsEnabled" value="false"/> <setting name="mapUnderscoreToCamelCase" value="false"/> <setting name="localCacheScope" value="SESSION"/> <setting name="jdbcTypeForNull" value="OTHER"/> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/> </settings>
typeAliases 类型命名:简化*Mapper文件中全类名的书写,可以指定别名,也可以直接写类名
<typeAliases><!-- 可以简写增删改的返回值类型 --> <package name="com.thekingqj.bean"/> </typeAliases>
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境 :配置环境的,MyBatis可以配置多种环境,不同的环境对应不同的配置,可以通过environments中的default属性指定对应的环境,来快速的切换。
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
<environments default="oracle"> <environment id="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="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>
type: JDBC | MANAGED | 自定义
JDBC:使用了 JDBC 的提交和回滚设置,依赖于从数据源得到的连接来管理事务范 围。 JdbcTransactionFactory
MANAGED:不提交或回滚一个连接、让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 ManagedTransactionFactory
自定义:实现TransactionFactory接口,type=全类名/别名
type: UNPOOLED | POOLED | JNDI | 自定义
UNPOOLED:不使用连接池, UnpooledDataSourceFactory
POOLED:使用连接池, PooledDataSourceFactory
JNDI: 在EJB 或应用服务器这类容器中查找指定的数据源
自定义:实现DataSourceFactory接口,定义数据源的获取方式。
实际开发中我们使用Spring管理数据源,并进行事务控制的配置来覆盖上述配置
databaseIdProvider 数据库厂商标识
mappers 映射器:在MyBatis初始化的时候,告诉MyBatis需要引入那些Mapper映射文件
引入Mapper文件的方式: resource:引入类路径下的文件、url(不常用):引入网络路径或磁盘文件、
Class:引入Mapper接口
有SQL映射文件 , 要求Mapper接口与 SQL映射文件同名同位置.
没有SQL映射文件 , 使用注解在接口的方法上写SQL语句.
注意:这几种引入方式跟Mapper映射文件本身并没有任何的关系,只是放置的位置不一样而已
<!-- 别名处理,这样在Mapper配置文件中返回值类型可以直接写类名了 --> <mappers> <!-- 可以直接映射配置文件的名称 --> <!-- <mapper resource="UserMapper.xml" /> --> <!--批量注册,这种方式要求SQL映射文件名必须和接口名相同并且在同一目录下 --> <mapper class="com.thekingqj.dao.UserMapper"/> <mapper class="com.thekingqj.dao.DeptMapper"/> </mappers>
