第 6 章 · 手术复盘:事务、规范、性能与演进 章节摘要:本章是全册的复盘室——用一台转账手术把事务纪律讲透,用一份坏味道清单收拢代码规范与单元测试,用慢查询与大结果集两个病例讲性能优化,用一张排错决策树归档全册高频故障,最后站在 3.5 之后的版本与生态坐标上,看清 MyBatis 的现在与去向。读完你带走的不是零散技巧,而是一整套可复用的工程纪律。 一条主线 前五章把手术台从搭台、入参、出参、缝合到监护走了一遍。复盘室要回答的是另一类问题:手术做错了怎么止损(事务),怎么保证每台手术都按标准做(规范与测试),手术太慢怎么排查(性能),出了事故怎么定位(排错),以及这张手术台未来还值不值得投入(演进)。 本章的主线病例是一个小模块:账户转账。6.
章节摘要:本章是全册的复盘室——用一台转账手术把事务纪律讲透,用一份坏味道清单收拢代码规范与单元测试,用慢查询与大结果集两个病例讲性能优化,用一张排错决策树归档全册高频故障,最后站在 3.5 之后的版本与生态坐标上,看清 MyBatis 的现在与去向。读完你带走的不是零散技巧,而是一整套可复用的工程纪律。
前五章把手术台从搭台、入参、出参、缝合到监护走了一遍。复盘室要回答的是另一类问题:手术做错了怎么止损(事务),怎么保证每台手术都按标准做(规范与测试),手术太慢怎么排查(性能),出了事故怎么定位(排错),以及这张手术台未来还值不值得投入(演进)。
本章的主线病例是一个小模块:账户转账。6.1 从"两步更新必须同生共死"出发,讲手动事务的 commit 与 rollback,再对照 Spring 声明式事务的写法差异;6.2 用一份真实项目里捞出来的坏味道清单(select 星号、超长 XML、无命名规范、无测试)逐条给出改法,并把 H2 内存库测试的完整套路交给你;6.3 处理两类性能病例——关联查询的 N 加一与几十万行的报表导出;6.4 把全册踩过的坑编成一张从报错信息出发的决策树;6.5 收尾于版本新特性与生态坐标。
一句金句:事务管的是"要么都做要么都不做",规范管的是"每台手术一个做法",性能管的是"别让数据库陪跑"——三件事都做对,排错章节才会越来越薄。
本章的转折不在新知识,而在视角:前五章是"怎么把功能做出来",这一章是"怎么让它活在生产环境"。6.1 会纠正一个普遍误解——autoCommit 打开不是"省了 commit 这行代码",而是把每条语句变成独立事务,转账的两步更新从此可能只做一半;6.3 会推翻另一个直觉——批量优化先看执行次数与网络往返,再谈语句本身。
最后一个转折在 6.5:MyBatis-Plus 这类增强库没有取代 MyBatis,而是架在它上面。分清"框架本体、生态增强、替代路线"三层,技术选型时才不会被名词带走。
这是全册最后一章。复盘之后,建议你回到第 2、3、4 章把自己项目里的真实映射重写一遍——手术台搭好只是开始,刀工都在一台台手术里练出来。