MyBatis XML映射文件通过select、insert、update标签实现数据库操作。1. select标签用于查询,id对应接口方法名,parameterType指定参数类型,resultType或resultMap定义返回结果,#{}防止SQL注入;字段与属性不一致时可用resultMap映射。2. insert标签执行插入,useGeneratedKeys配合keyProperty可回填自增主键,或用selectKey获取非自增主键。3. update标签用于更新数据,结合set和if实现动态字段更新,避免多余逗号。建议统一使用#{}传参,复杂映射用resultMap,灵活更新用动态SQL。

在 MyBatis 中,XML 映射文件是操作数据库的核心部分,它通过 SQL 语句与 Java 接口方法绑定,实现数据的持久化。下面详细说明 select、insert、update 标签的基本用法和常见配置。
1. select 标签:查询数据
作用:执行 SELECT 查询语句,将结果映射为 Java 对象或集合。
常用属性:
- id:对应 Mapper 接口中方法名,必须唯一。
- parameterType:传入参数类型(可选,MyBatis 可自动推断)。
- resultType:返回值类型(基础类型或实体类)。
- resultMap:引用外部定义的 resultMap,用于复杂映射关系。
示例:
说明:#{id} 是预编译占位符,防止 SQL 注入;resultType 指定返回类型为 User 实体类。
若字段名与属性名不一致,可使用 resultMap 显式映射:
2. insert 标签:插入数据
作用:执行 INSERT 语句,向数据库添加新记录。
常用属性:id、parameterType。
示例:
INSERT INTO users (user_name, user_email) VALUES (#{name}, #{email})
如果需要返回自增主键,可通过以下方式获取:
INSERT INTO users (user_name, user_email) VALUES (#{name}, #{email})
说明:useGeneratedKeys="true" 表示使用数据库自增主键,keyProperty="id" 将生成的主键值赋给对象的 id 属性。
也可使用 获取主键(适用于不支持自增的数据库):
SELECT NEXTVAL('user_seq') INSERT INTO users (user_id, user_name, user_email) VALUES (#{id}, #{name}, #{email})
注意:order="BEFORE" 表示先执行 selectKey 获取 ID,再执行插入。
3. update 标签:更新数据
作用:执行 UPDATE 语句,修改已有记录。
示例:
UPDATE users SET user_name = #{name}, user_email = #{email} WHERE user_id = #{id}
该语句会根据传入的 User 对象更新对应字段。通常 update 返回值为 int 类型,表示影响的行数。
可结合动态 SQL 实现条件更新(只更新非空字段):
UPDATE users WHERE user_id = #{id} user_name = #{name}, user_email = #{email},
标签会自动处理多余的逗号,避免语法错误。
小结与建议
编写 XML 映射文件时,注意以下几点:
- SQL 语句中的变量统一用
#{}包裹,安全且高效。 - 对于复杂查询或多表关联,优先使用 resultMap 定义映射规则。
- 插入操作如需主键回填,合理使用
useGeneratedKeys或。 - 更新操作配合
和可实现灵活的条件更新。
基本上就这些,掌握这几个标签的写法,就能应对大多数数据库操作场景。










