Appearance
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 和关联查询。
