MyBatis XML映射文件核心是SQL与Java方法绑定,需正确处理参数传递、结果映射及动态SQL;通过select/insert/update/delete标签配置基础操作,结合#{param}防注入、resultMap解决字段不一致、//实现动态逻辑。

MyBatis 的 XML 映射文件核心是把 SQL 语句和 Java 方法绑定起来,关键不是写多复杂的 SQL,而是让 SQL 能正确接收参数、返回结果,并适配不同场景(比如动态条件、批量操作)。下面直接说实用写法。
基础 SQL 配置:select / insert / update / delete 标签
每个 SQL 操作对应一个标签,必须放在
示例(UserMapper.xml):
SELECT * FROM user WHERE id = #{id}
INSERT INTO user (name, email) VALUES (#{name}, #{email})
说明:
• #{id} 是预编译占位符,防 SQL 注入,推荐始终使用
• ${email} 是字符串拼接(不推荐,除非明确需要,如动态表名)
• resultType 用于简单类型或已定义别名的 POJO;复杂映射用 resultMap
• parameterType 可省略(MyBatis 3.4+ 会自动推断),但建议显式写上便于维护
传参方式:单个参数、多个参数、对象参数怎么写
MyBatis 会把方法参数包装成一个 Map,所以写法取决于你传的是什么:
- 单个基本类型(int/String):直接用 #{id} 或 #{param1}
- 多个参数(无注解):默认 key 是 param1, param2...,建议加 @Param("xxx") 注解,例如:
User findByNameAndAge(@Param("name") String name, @Param("age") int age);
XML 中就写 WHERE name = #{name} AND age = #{age} - 传对象(如 User user):直接用属性名,如 #{name}、#{email},支持点号嵌套(#{profile.phone})
动态 SQL:if / choose / where / foreach 常用组合
避免手拼 SQL 字符串,用 MyBatis 内置标签处理条件逻辑:
本文档主要讲述的是mybatis语法和介绍;MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。感兴趣的朋友可
示例:按条件查询用户
SELECT * FROM user
AND name LIKE CONCAT('%', #{name}, '%')
AND age >= #{minAge}
要点:
•
•
• 批量插入用
结果映射:resultMap 解决字段名与属性名不一致
当数据库字段是 user_name,Java 属性是 userName,又不想改命名或加 @Column,就用 resultMap:
SELECT id, user_name, email_addr FROM user
注意:
•
• 关联查询(一对多、多对一)也靠 resultMap +
基本上就这些。XML 文件本质是配置桥梁,重点是参数怎么进、SQL 怎么变、结果怎么出。写熟了比注解更灵活,尤其复杂动态场景。









