MyBatis XML配置分为mybatis-config.xml(须严格按properties→settings→typeAliases→environments→mappers顺序)和Mapper XML(以namespace绑定接口,含select/insert/update/delete/resultMap等核心标签)。

MyBatis 的 XML 配置分两类:全局配置文件 mybatis-config.xml 和 SQL 映射文件(如 UserMapper.xml)。前者管连接、缓存、别名等基础设置;后者专注 SQL 编写与结果映射,两者配合才能让 DAO 接口正常工作。
mybatis-config.xml 必须遵守的结构顺序
这个文件是 MyBatis 启动时加载的根配置,所有标签必须严格按以下顺序书写,否则会解析失败:
-
properties:外部属性引入(如数据库配置),支持
resource(类路径)或url(绝对路径),也支持内联 -
settings:全局开关控制,比如
lazyLoadingEnabled="true"开启延迟加载,cacheEnabled="true"启用二级缓存 -
typeAliases:简化实体类引用,可用
,更常用的是批量注册 -
environments:定义数据源环境,
default="dev"指定默认激活环境,每个内需包含和 -
mappers:注册映射文件,支持
或(要求 XML 与接口同包同名)
Mapper XML 文件的核心标签
每个映射文件以 开头,namespace 必须和对应接口全限定名一致,这是方法绑定的基础。
-
:执行查询,
id对应接口方法名,resultType用于字段名与属性名完全匹配的简单映射;若不一致或需嵌套对象,改用resultMap引用外部定义 -
:插入语句,设 useGeneratedKeys="true" keyProperty="id"可自动回填数据库自增主键到参数对象 -
和 :结构类似,只需写 SQL 和匹配 id,无返回值要求 -
:定义可复用的 SQL 片段,用 引入,避免重复写WHERE或字段列表 -
:复杂结果映射核心,支持 (主键)、(普通字段)、(一对一)、(一对多)
常见易错点和实用技巧
实际配置中几个关键细节容易被忽略,但直接影响运行效果:
- XML 文件开头的 DTD 声明不能省略或写错,例如:
-
properties中定义的变量,可在environments的里用${username}引用;若内外同名,外部文件优先 - 使用
批量注册 mapper 时,确保 XML 文件放在 classpath 对应路径下,且文件名与接口名一致(如UserMapper.java→UserMapper.xml) - 动态 SQL 标签(
、、)只能出现在/等语句内部,不能直接放在下
一个最小可用的 UserMapper.xml 示例
结合实际场景更易理解:










