mybatis全局配置文件mybatis-config.xml是框架启动总开关,必须严格按固定顺序书写:properties、settings、typealiases、typehandlers、objectfactory、plugins、environments、databaseidprovider、mappers,全部嵌套在configuration内,顺序错一位即启动失败。

MyBatis 的全局配置靠 mybatis-config.xml 文件驱动,它不是可有可无的“辅助文件”,而是框架启动时解析行为、连接数据库、映射 SQL 的总开关。配置必须严格按顺序写,错一位就会报错,无法启动。
必须遵守的标签顺序
所有子标签都必须嵌套在 <configuration></configuration> 内,且顺序固定,不可调换:
-
<properties></properties>—— 外部参数引入(如数据库账号密码) -
<settings></settings>—— 全局运行行为控制(比如驼峰映射、延迟加载) -
<typealiases></typealiases>—— 类型简写(避免反复写全限定类名) -
<typehandlers></typehandlers>—— 自定义类型转换逻辑(非必需,按需添加) -
<objectfactory></objectfactory>—— 实体对象实例化方式(极少改动) -
<plugins></plugins>—— 拦截器扩展点(如分页插件、日志增强) -
<environments></environments>—— 数据库环境配置(含事务管理器和数据源) -
<databaseidprovider></databaseidprovider>—— 多数据库厂商适配(如 MySQL/Oracle 切换) -
<mappers></mappers>—— 注册 SQL 映射文件或 Mapper 接口
最常配的四个核心部分
日常开发中,以下四块几乎必配,其余按项目需要补充:
-
properties:用
resource="db.properties"引入外部配置,再通过${jdbc.url}这类占位符引用。好处是开发/测试/生产环境只需换一个 properties 文件,XML 不动。 -
settings:关键项建议打开:
-
mapUnderscoreToCamelCase=true→ 自动把user_name映射成userName,省去手动写<resultmap></resultmap> -
lazyLoadingEnabled=true→ 开启延迟加载,避免查一个用户把订单、地址全查出来 -
cacheEnabled=true→ 默认开启二级缓存,注意要配合<cache></cache>在 Mapper 中显式启用
-
-
environments:至少定义一套
<environment id="development"></environment>,里面指定:-
<transactionmanager type="JDBC"></transactionmanager>→ 使用 JDBC 原生事务(Spring 整合时通常设为MANAGED) -
<datasource type="POOLED"></datasource>→ 推荐用内置连接池,比UNPOOLED更高效
-
-
mappers:注册 SQL 映射的三种常用方式:
-
<mapper resource="com/example/mapper/UserMapper.xml"></mapper>—— 加载 XML 文件 -
<mapper class="com.example.mapper.UserMapper"></mapper>—— 绑定接口(要求 XML 和接口同名同包) -
<package name="com.example.mapper"></package>—— 扫描整个包下所有 Mapper 接口
-
容易踩坑的细节
这些点不难,但错一个就启动失败:
- Dtd 约束要写对:
-
<properties></properties>中不能同时写resource和url,只能二选一 -
<environments></environments>必须带default属性,比如default="development" - 所有标签大小写敏感,
<setting></setting>不是<setting></setting>,value="true"不能写成value="True"
一个最小可用示例
删掉注释后,这个结构能跑通基础查询:
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











