Skip to content

MyBatis 持久层框架入门实践 ​

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。对于从 .NET (EF) 转型 Java 的开发者来说,MyBatis 提供了更细粒度的 SQL 控制权。

1. MyBatis 核心理念 ​

与 EF (Entity Framework) 的全自动映射不同,MyBatis 属于“半自动” ORM 框架:

  • 核心优势:SQL 与代码分离,易于维护和优化;支持动态 SQL;学习曲线平缓。
  • 与 EF 对比:EF 封装程度高,开发效率快,但复杂 SQL 优化较难;MyBatis 侧重于手写 SQL,性能可控性更高。

2. 快速上手要点 ​

2.1 核心配置 ​

  • SqlSessionFactory: 每个 MyBatis 应用的核心,通过它可以获取 SqlSession。
  • Mapper 接口: 定义操作数据库的方法签名。
  • XML 映射文件: 编写具体的 SQL 语句,并定义 resultMap。

2.2 关联关系映射 (重点) ​

掌握以下配置是使用 MyBatis 的核心:

  • 一对一 / 多对一:使用 <association>。
  • 一对多:使用 <collection>。
  • ResultMap: 定义数据库列名与 Java 对象属性名之间的映射关系。

3. 开发避坑与技巧 ​

3.1 常见报错 ​

  • Mapped Statements collection already contains value for...: 通常是 XML 中的 id 重复了。
  • BindingException: 检查 Namespace 是否与 Mapper 接口全路径名一致。

3.2 提升开发效率 (IntelliJ IDEA) ​

  • Alt + Insert: 快速生成 Getter/Setter/Constructor。
  • 插件推荐: 安装 MyBatisX 或 Free MyBatis Tool,实现 XML 与 Mapper 接口间的快速跳转。

4. 学习建议与感悟 ​

  • 大胆尝试:在测试环境下勇敢尝试各种配置,不要怕报错。
  • 动手实践:代码一定要一行一行敲出来,只有手感上来了,理解才会深刻。
  • 关注核心:初期不需要掌握所有特性,重点攻克 ResultMap、动态 SQL 和关联查询。

5. 参考资料 ​

方舟 · Ark