mybatis 通过 mapper.xml 实现 crud:根标签需配置正确 namespace;支持主键回填;需谨慎写 where;用 resulttype 或 resultmap 映射结果,并支持动态 sql。

MyBatis 通过 XML 实现增删改查,核心是将 SQL 语句从 Java 代码中剥离,写在独立的 Mapper.xml 文件里,并由 Mapper 接口动态代理调用。只要 XML 命名空间、SQL ID、参数类型、返回类型配置正确,就能完成完整 CRUD。
XML 映射文件基础结构
每个 Mapper.xml 必须有 <mapper></mapper> 根标签,并通过 namespace 关联对应接口全限定名。例如接口为 com.example.UserMapper,则 namespace 必须一致:
增(Insert)操作
使用 <insert></insert> 标签,支持主键自增或手动赋值:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- MySQL 自增主键:用
useGeneratedKeys="true"+keyProperty回填主键到传入对象 - Oracle 序列等需用
<selectkey></selectkey>先查再插
INSERT INTO user (name, email) VALUES (#{name}, #{email})
删(Delete)和改(Update)操作
语法简洁,注意参数传递方式:
- 单个简单参数(如 int、String)直接用
#{value}或省略 value 名(MyBatis 3.4+ 支持) - 多个参数或对象属性,推荐传入 JavaBean 或
@Param注解命名 - 更新时建议加
WHERE条件防止全表误改
DELETE FROM user WHERE id = #{id}
UPDATE user SET email = #{email} WHERE id = #{id}
查(Select)操作与结果映射
<select></select> 是最灵活的部分,重点在 resultType 或 resultMap:
-
resultType:适用于字段名与 POJO 属性名完全一致(或开启驼峰自动映射) -
resultMap:用于复杂映射(如字段别名、嵌套对象、一对多关联) - 动态查询可用
<if></if>、<where></where>、<foreach></foreach>等标签拼接条件
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










