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>
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>
transactionManager
type: JDBC | MANAGED | 自定义
JDBC:使用了 JDBC 的提交和回滚设置,依赖于从数据源得到的连接来管理事务范 围。 JdbcTransactionFactory
MANAGED:不提交或回滚一个连接、让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 ManagedTransactionFactory
自定义:实现TransactionFactory接口,type=全类名/别名
dataSource
type: UNPOOLED | POOLED | JNDI | 自定义
UNPOOLED:不使用连接池, UnpooledDataSourceFactory
POOLED:使用连接池, PooledDataSourceFactory
JNDI: 在EJB 或应用服务器这类容器中查找指定的数据源
自定义:实现DataSourceFactory接口,定义数据源的获取方式。
实际开发中我们使用Spring管理数据源,并进行事务控制的配置来覆盖上述配置
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>