1.mybatis-config.xml配置顺序
<configuration>
<!-- 读取外部配置 -->
<properties resource="jdbc.properties"/>
<!-- 全局配置-->
<settings>
<setting name=" " value=" "/>
</settings>
<!-- 别名,可代替全限定名称-->
<typeAliases>
<package name=" "/>
</typeAliases>
<!-- 插件,即拦截器-->
<plugins>
<plugin interceptor=" ">
<property name=" " value=" "/>
</plugin>
</plugins>
<!-- 环境-->
<environments default="development">
<environment id="development">
<!-- 事务管理器-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 数据库厂商标识-->
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
</databaseIdProvider>
<!--mapper映射业务-->
<mappers>
<package name="org.example.dao.book"/>
</mappers>
</configuration>
2.settings
<settings>
<!-- 和cache配合开启二级缓存,默认true -->
<setting name="cacheEnabled" value="true"/>
<!-- 延迟加载的全局开关,开启时所有关联对象都会延迟加载,默认false-->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 是否关闭按需加载,默认false-->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 是否使用列标签代替列名, 默认true -->
<setting name="useColumnLabel" value="true"/>
<!-- MyBatis自动映射列到字段或属性的方式. NONE关闭,PARTIAL映射没有定义嵌套结果字段,FULL映射所有. 默认PARTIAL-->
<setting name="autoMappingBehavior" value="PARTIAL"/>
<!-- 发现自动映射目标未知列的行为. NONE:不做反应,WARNING: 输出警告日志, FAILING: 映射失败(抛出 SqlSessionException),默认None -->
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<!-- 默认的执行器,SIMPLE普通的执行器, REUSE执行器会重用预处理语句(PreparedStatement), BATCH 执行器不仅重用语句还会执行批量更新,默认SIMPLE -->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!-- 设置超时时间,数据库驱动等待数据库响应的秒数, 默认null -->
<setting name="defaultStatementTimeout" value="25"/>
<!-- 结果集获取数量(fetchSize)设置一个建议值,此参数只可以在查询设置中被覆盖, 默认null -->
<setting name="defaultFetchSize" value="100"/>
<!-- 是否不允许在嵌套语句中使用分页, 允许使用false, 默认值false -->
<setting name="safeRowBoundsEnabled" value="false"/>
<!-- 是否开启驼峰命名自动映射, 默认false -->
<setting name="mapUnderscoreToCamelCase" value="false"/>
<!-- MyBatis利用本地缓存机制(Local Cache)防止循环引用和加速重复的嵌套查询,
默认SESSION, 缓存一个会话中执行的所有查询, 若为STATEMENT,本地缓存将仅用于执行语句,对相同SqlSession的不同查询将不会进行缓存 -->
<setting name="localCacheScope" value="SESSION"/>
<!-- 当没有为参数指定特定的JDBC类型时,空值的默认JDBC类型, 默认other-->
<setting name="jdbcTypeForNull" value="OTHER"/>
<!-- 指定对象的哪些方法触发一次延迟加载 -->
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
<!-- 使用日志 -->
<setting name="logImpl" value="LOG4J" />
</settings>
3.别名
<typeAliases>
<!-- 为指定类设置别名, 若alias不指定别名则默认为类名小写 -->
<!-- <typeAlias type="org.example.pojo.Book" alias="book"/>-->
<!-- 为整个包下所有类起别名, 每个类别名为类名小写 -->
<package name="org.example.pojo"/>
</typeAliases>
4.数据库厂商标识,使用databaseId="mysql"指定
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
<property name="DB2" value="db2"/>
<property name="Oracle" value="oracle" />
</databaseIdProvider>
5.映射器
<mappers>
<!-- 使用相对路径 -->
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
<!-- 绝对路径 -->
<mapper url="file:///var/mappers/PostMapper.xml"/>
<!-- 接口 -->
<mapper class="org.mybatis.builder.PostMapper"/>
<!-- 扫描整个包 -->
<package name="org.mybatis.builder"/>
</mappers>