《MyBatis技术内幕》

2020-11-26

这本书上次看到一半,由于刚刚刷了一些 MyBatis 的面试题,这次重新看还挺快,花了 3 个晚上睡前时间加一些午睡前的时间,估计有七八个小时。

 

笔者找某些方面的书有一个习惯,豆瓣搜一下关键词,看下评分与评论数,超过 7.5 分 + 评论过百,基本这本是值得花时间扫一眼的。这本评论人数 70,但分 8.6 还挺高。

 

先说下主要内容:

  • 介绍了 MyBatis 的整体功能,与 Hibernate 比优势体现在哪

  • 使用示例

  • 整体架构,基础支持层、核心处理层、接口层的作用

  • 详细说了基础支持层的技术点、功能点的实现。比如 XML 的解析、反射工具类的封装、类型转换的处理、日志模块的适配、资源加载、数据源的实现、事务管理、缓存的实现

  • 核心处理层的功能与实现。初始化中对 XML 的解析、动态 SQL 解析、结果集的处理、缓存的 key 的生成策略、数据库执行的各种 Statement 处理接口实现、各种 SQL 执行器、开放的给客户端的使用接口

  • 插件的实现

  • 如何与 Spring 集成

  • MyBatis-Generator 自动生成 Mapper 接口、PO、Mapper xml

...

 

一些感触:

由于笔者这一段时间也坚持输出博客,看到这本书最大的一点感触就是,源码分析的内容是真难写。一来需要你对整体架构要有深刻理解;二来要理解代码逐行标出作用。还有一个比较尴尬的点就是,需要贴出大量篇幅的源码,显得非常枯燥。写好源码分析的书,需要足够的水平。这本书讲的很细致,说核心知识之前,会讲一些背景知识作为铺垫。比如讲 XPath 解析 xml 时,就会讲解一下 XML 的 3 种解析方式,用 XPath 有哪些优缺点,然后才到具体是如何解析,这样就会走心。动态代理也是,提前讲了 JDK 动态代理的标准模板代码与实现原理,才到 MyBatis 中具体哪些地方被动态代理了,如日志模块、Mapper、懒加载等。

写框架,JDK 动态代理、cglib、反射这些技术一般都是绕不开的,代码和功能的扩展性也要考虑到。

ConstXiong 备案号:苏ICP备16009629号-3