最近在学mybatis框架配置开启延迟加载的开关时,在主配置文件中没注意<setting>的位置,结果一直有个大红叉。
我就纳闷了,xml文件中一般对标签的位置要求没那么多,这个怎么那么矫情?于是就按提示信息,发现标签必须按下面的顺序依次配置,如下图
一个比较完整的mybatis主配置文件结构如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 加载属性文件 -->
<properties resource="db.properties">
<!--properties中还可以配置一些属性名和属性值 -->
<!-- <property name="jdbc.driver" value=""/> -->
</properties>
<!-- 全局配置参数,用到再设置 -->
<!-- <settings>
</settings> -->
<!-- 别名定义 -->
<typeAliases>
<!-- 针对单个别名定义
type:类的全路径
alias:别名
-->
<!-- <typeAlias type="com.haut.po.User" alias="user"/> -->
<!-- 批量别名定义
指定包名,mybatis会自动扫描包中的po类,自动定义别名,别名就是类名(首字母大小写都可以)
-->
<package name="com.haut.po"/>
</typeAliases>
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理,事务控制由mybatis接管-->
<transactionManager type="JDBC" />
<!-- 数据库连接池,由mybatis管理-->
<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>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml"/>
<!--通过resource方法一次加载一个映射文件 -->
<!-- <mapper resource="mapper/UserMapper.xml"/> -->
<!-- 通过mapper接口加载单个映射文件
需要遵循一些规范:mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中。
该规范的前提是:使用的是mapper代理开发
-->
<!-- <mapper class="com.haut.mapper.UserMapper"/> -->
<!-- 批量加载mapper
指定mapper接口的包名,mybatis会自动扫描包下所有的mapper接口进行加载
遵循规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
该规范的前提是:使用的是mapper代理开发
-->
<package name="com.haut.mapper"/>
</mappers>
</configuration>