<!-- mybatis config must config order by this index -->
properties,
settings,
typeAliases,
typeHandlers,
objectFactory,
objectWrapperFactory,
reflectorFactory,
plugins,
environments,
databaseIdProvider,
mappers
在XML配置文件中,配置项的排列顺序是有要求的,如上所排列,如果顺序放错,xml配置文件会提示报错(idea)
前言
一般使用,常见配置主要是 properties,settings, environments,mappers 四种,配置好后,便可以创建简单的测试和研究MyBatis的具体的使用方法。
提供测试用的简单的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/schema/mybatis-3-config.dtd">
<configuration>
<!-- define property for next rows can use it as global -->
<properties>
<property name="classDriver" value="com.mysql.jdbc.Driver"/>
<property name="url_aux"
value="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false"/>
<property name="username" value="root"/>
<property name="pwd" value="root"/>
<property name="log-stdout" value="STDOUT_LOGGING"/>
</properties>
<settings>
<setting name="logImpl" value="${log-stdout}"/>
</settings>
<!-- TODO 此处选择连接的DB, 设置default属性就行了 -->
<environments default="def">
<environment id="def">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="${classDriver}"/>
<property name="url" value="${url_aux}"/>
<property name="username" value="${username}"/>
<property name="password" value="${pwd}"/>
</dataSource>
</environment>
</environments>
<!-- TODO 手动添加mapper,或者添加资源拷贝然后使用package的方式来指定mapper位置(Xml和mapper放一起,名称保持一致) -->
<mappers>
<!-- define mapper xml file relative path -->
<package name="com.demo.sys.mapper"/>
</mappers>
</configuration>
1 属性(properties)
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。
例如:${project.resources}/org/mybatis/example/config.properties
<properties resource=“org/mybatis/example/config.properties”>
<property name=“username” value=“root”/>
<property name=“password” value=“123456”/>
</properties>
设置好的属性可以在整个配置文件中用来替换需要动态配置的属性值。比如:
<dataSource type=“POOLED”>
<property name="driver" value="{driver}"/>
<property name="url" value="driver"/>
<property name="url"value="{url}"/>
<property name="username" value="{username}"/>
<property name="password" value="username"/>
<property name="password"value="{password}"/>
</dataSource>
如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载: 首先读取在 properties 元素体内指定的属性。 然后根据 properties 元素中的 resource 属性读取类路径下属性文件。 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。
<!-- MyBatis 实例启动后会按照下面的顺序来查找和配置属性 -->
第一优先:
在代码中直接通过properties传入build方法。
第二优先:
通过resource或者url读取到的properties文件中属性。
第三优先:
直接在properties内的子标签property内定义的属性。
2 设置(settings)
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。
一个配置完整的 settings 元素的示例如下:
<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