第 6 章 [总结] 继往开来:回顾与展望
第 6 章 [总结] 继往开来:回顾与展望
Prorise第 6 章 [总结] 继往开来:回顾与展望
摘要: 恭喜您!从 JDBC 的困境出发,到亲手搭建并完善一个银行应用,您已经系统地掌握了 MyBatis 从入门到进阶的核心技术。我们一起探索了 CRUD 操作、动态 SQL、复杂关系映射、性能优化 以及 生态工具。本章将不再引入新的功能,而是通过 学习路径回顾、核心知识速查 和 未来技术展望 三个部分,来为您梳理知识体系,巩固学习成果,并清晰地规划出下一步的学习路径——拥抱 Spring Boot,让 MyBatis 在现代化企业级开发中发挥出更大的威力。
6.1. [回顾] 我们的 MyBatis 学习之旅
让我们通过一个时间线,回顾一下我们是如何一步步构建并完善我们的应用,以及在每个阶段掌握的关键技能。
2025
第五章: 生产力
- 我们学习了如何集成
PageHelper插件,用两行代码实现了优雅的物理分页。 - 我们掌握了
MyBatis Generator,根据数据库表一键生成了所有基础的数据访问层代码,极大提升了开发效率。
第四章: 扩展性
- 我们深入学习了
<resultMap>,并用<association>和<collection>成功处理了客户与账户间的“一对多/多对一”关联关系。 - 我们揭示了 N+1 查询问题,并通过 延迟加载 和 一、二级缓存 对应用进行了性能优化。
第三章: 健壮性
- 我们为转账业务引入了 事务控制,通过改造
SqlSessionUtil并结合ThreadLocal模式,确保了业务操作的原子性。 - 我们为了满足报表需求,全面学习了 MyBatis 最强大的 动态 SQL 功能,包括
<if>,<where>,<foreach>等标签。
第二章: 核心
- 我们实现了应用的第一个核心功能“转账”,并在此过程中掌握了完整的
CRUD操作。 - 我们学习并采用了 Mapper 代理模式,并对比了
XML与注解两种实现方式。 - 我们厘清了
@Param注解的用法,以及#{}与${}的本质区别与安全风险。
第一章: 奠基
- 我们理解了 MyBatis 的价值,并从零开始,利用现代化工具库搭建了第一个 MyBatis 项目。
- 我们掌握了 MyBatis 的基本工作流,配置了核心文件,并成功执行了第一次数据库查询。
6.2. [核心] 关键配置与最佳实践速查
为了方便您日后查阅,这里将整个学习过程中的核心配置和最佳实践汇总成速查表。
1. mybatis-config.xml 核心标签
| 标签 | 功能描述 |
|---|---|
settings | 全局配置开关。例如:mapUnderscoreToCamelCase (驼峰映射), lazyLoadingEnabled (延迟加载)。 |
typeAliases | 为 POJO 类起别名,简化 XML 中的书写。 |
plugins | 注册插件,例如 PageHelper 分页拦截器。 |
environments | 配置数据库环境(数据源、事务管理器)。 |
mappers | 注册 Mapper 映射文件。 |
2. Mapper XML 核心标签
| 标签 | 功能描述 |
|---|---|
<select> | 定义查询操作。 |
<insert> | 定义插入操作,可通过 useGeneratedKeys 获取自增主键。 |
<update> | 定义更新操作。 |
<delete> | 定义删除操作。 |
<resultMap> | (核心) 定义复杂的列-属性映射关系。 |
<association> | (核心) 用于处理“多对一”关联关系。 |
<collection> | (核心) 用于处理“一对多”关联关系。 |
<if> <where> | (核心) 用于构建动态条件的查询语句。 |
<foreach> | (核心) 用于遍历集合,实现 IN 子句等批量操作。 |
3. 最佳实践清单
- 开发模式: 始终使用 Mapper 代理模式(接口 + XML/注解)进行开发。
- 参数安全: 永远优先使用
#{}作为参数占位符以防止 SQL 注入。 - 事务控制: 事务应在 Service 层 进行管理,以确保业务的原子性。在非 Spring 环境下,使用
ThreadLocal模式管理SqlSession是保证事务统一的最佳实践。 - 动态查询: 充分利用动态 SQL 标签(
<where>,<set>,<foreach>)来构建灵活、健壮的 SQL。 - 性能考量: 对于关联查询,优先考虑使用 延迟加载 来避免 N+1 问题。对于高频访问的数据,合理开启 二级缓存。
6.3. [展望] 下一步:拥抱 Spring Boot
我们本次学习中手动编写的 SqlSessionUtil 工具类、以及在 Service 层手动控制事务的 try-catch-finally 代码块,都是为了让您深刻理解 MyBatis 的底层工作原理。在现代化的企业级开发中,这些工作几乎都由 Spring 或 Spring Boot 框架自动完成了。
Spring Boot 会为我们简化什么?
- 自动化配置: 无需再编写
mybatis-config.xml。数据库连接、驼峰映射、插件注册等都可以在application.properties或application.yml中通过几行配置完成。 - 依赖管理: 只需引入一个
mybatis-spring-boot-starter,所有相关的依赖都会被自动管理。 - 对象管理:
SqlSessionFactory和SqlSession的创建、管理、关闭都由 Spring 容器自动完成。Mapper 接口可以直接通过@Autowired注解注入到 Service 层使用。 - 声明式事务: 这是最重要的简化。我们不再需要手动
commit和rollback。
对比一下我们的手动事务代码:
1 | // 我们的手动事务代码 |
在 Spring Boot 中,它会简化成这样:
1 | import org.springframework.beans.factory.annotation.Autowired; |
可以看到,框架帮助我们处理了所有繁琐的底层细节,让我们可以更专注于业务逻辑本身。
总结: 您已经为 MyBatis 打下了坚实的基础。您的下一个目标,就是学习如何将 MyBatis 整合进 Spring Boot 中。有了现在对底层原理的深刻理解,您在学习整合开发时将会事半功倍,游刃有余。祝您在技术的道路上不断精进,一帆风顺!
评论
隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果







