易燃物汇聚 YouTube 有声书与书评
通用源码阅读指导书:MyBatis源码详解 封面

通用源码阅读指导书:MyBatis源码详解

易哥

7912人在读
18.1万字总字数
¥70定价

内容简介

本书是一本以MyBatis源码为材料,详细介绍源码阅读相关方法和技巧的指导书籍。 本书以MyBatis源码中的包为单位,详细和透彻地介绍每个类的源码,包括其背景知识、组织方式、逻辑结构和实现细节。在本书的讲解中,不漏过每一个类,不跳过每一个难点,做到深浅一致。在阅读MyBatis源码的过程中,本书使用了运行初探、模块归类、合理猜测、类比阅读、网格阅读等许多源码阅读方法。最后,本书对这些源码阅读方法进行了总结整理。 本书适合想要开展源码阅读、想要借鉴优秀设计和想要深入了解MyBatis原理的开发者阅读使用。本书能让读者在详细了解MyBatis源码的基础上提升自己的源码阅读能力、系统架构能力及软件开发能力。

读者书评

★★★★★

对于还没有完整读过源码的小伙伴,本书建议的源码阅读方式,还是有一定参考性。mybatis是Orm的实现,搞清楚o指的是java对象,r指的是关系型数据库,m映射是把Java方法和sql语句关联起来,这一核心观点后,再去看源码,会得心应手。 对于阅读源码,我想起来5年前的我,我当时有段时间,像中毒了一样,每个周看个框架源码,然后写一篇Csdn,持续了大概一年左右。 我也可以谈下我的源码阅读方式,首先第一步是选择读哪些,先是jdk 本身的源码,例如io、lang、collection、concurrent等等,先把Java自身的读完。然后是各大开源组织的,例如apache 的、spring 的;各大互联网公司的,例如google的、Netflix 的、阿里的、京东的,等等,当然国外的github 和国内的gitee 可以多去逛逛。 第二步,选择完一个主题后,先看这个框架的功能,还有类似的框架有哪些,从功能上个有什么优缺点,找个10篇左右的Csdn或者博客园的文章,先一股脑看完再说。 第三步,写测试用例,把主要功能都尽量run起来,有个体感,同时开始沿着主线读源码,遇到看不懂的,先打个断点,debug的时候,再详细看下,对于不属于这个框架的问题,可以先放着,后面再慢慢研究。 第四步,一定要输出,当你搞清楚这个框架有哪些功能、跟类似的框架比有啥优缺点,从架构和实现上,包括设计模式、用到的依赖包、设计的比较精巧的点,都写出来,这里又是一个思维提升的过程,在这里会反过来,让你继续去深入阅读源码,持续解决第三步未解之谜。 当你形成习惯后,例如我们说网络协议相关的框架,netty 、okhttp、httpclient等等之类的,你应该不陌生;提到字节码修改的,例如asm、cglib、javaasist 、byte-buddy,这些你应该不陌生;从你准备开始阅读源码,你会发现,要做的事情太多了,不过一步一个脚印,你会发现,付出是值得的。

★★★★★

主要是讲Mybatis源码,但是通过详解Mybatis源码总结如何阅读开源项目,分享了阅读开源项目的方法。授人以鱼同时也授人以渔。非常适合对于开源项目无从下手的工程师

★★★★★

本书可以作为指导研究mybatis更深原理的入门书籍,在此过程中可以学会阅读源码的一些技巧,但是技巧不可能适合所有人,仍需自己实打实去看源码并且总结学习,本书值得一读

★★★☆☆

真的是源码解析,范围就在源码,扩展太少了。

★★★★★

挺好,适合初学者阅读,整体讲解较浅,不过 MyBatis 的源码本来也相对简单。

★★★★★

作者分析源码的逻辑和思路是值得我们学习的,由表及里,由浅入深,非常赞同书里面的一句话,也就是二十五章总结里说的,通过功能猜测源码要比通过源码猜测功能简单得多。在以后的源码学习中,最好做到会用框架,再读源码,不要为了读源码而读源码,在明白框架功能的基础上,再带着如何实现的问题去阅读源码的实现思路,我们才会真正的理解源码中一些比较优秀的设计理念,我们阅读源代码的目的才真正达到了。

★★★★★

回顾MyBatis这本书,总结如下: MyBatis是一个半ORM的框架,,其中比较重要的几个对象 1、XML或者注解形式的配置是通过一个工厂模式的ConfigBuilder读取,主要是封装Configuration对象的一些属性。无论mybatis-config.xml还是基于yml、properties的配置都是封装MyBatis的Configuration对象,其中包含(数据源、驼峰、扫描包路径、XML配置路径、开启缓存、映射器、类型枚举等) 2、mappedStatement,此对象是将interface和XML配置的SQL封装的对象,其中包含statement(接口的相对路径),SQL配置,paramter、result、class等,当调用MyBatis接口时,其实是Executor获取session后执行配置中的sql,查询到数据后根据配置的resultMap或者resultType封装返回结果进行返回。 3、Executor,一共包含四种,Simple、Cache、Reuse和Base,base是执行一级缓存的执行器,一级缓存是session级别的,其作用域可以配置session或者statment。二级缓存是namespace级别的,其是cachingExecutor实现的,如果二级缓存开启后一级缓存是有cachingExecutor中的delegate对象实现,此处用到了装饰者模式,不过在正常的开发中二级缓存不会用到,大部分的场景都是IO密集型,如果开启二级缓存在不考虑准确度情况下无疑是对系统的复杂性提升了很多,况且二级缓存的数据准确性也并非可圈可点。而缓存失效的场景也很多,如commit、inset、update、delete、flush等。缓存的策略有很多这里可以参考redis,如LRU、FIFO、Synchornized、Blocking、Schedule等。 4、Environment是封装数据源的对象,数据源分两种pool和unpool,池化数据源的delete操作是将当前连接释放到连接池,没有关闭的操作,而unpool的数据源delete是close,一般在项目使用中为了节约资源都会选择pool 5、事务,mybatis在执行SQL之前会根据配置(是否开启事务,事务隔离级别等)添加事务处理代码,此处有事务处理缓存,TranscationalCache用于缓存不同事物的结果 6、MyBatis中用到的设计模式、单例模式、工厂模式、责任链模式、装饰器模式、代理模式等 7、其他的名词,JDK动态代理interface、自增主键、懒加载、序列化、注解、typeHandler、Parsing、Binding、Parsing、Script等

★★★★★

Mybatis 源码阅读……归类总结,组织划分,功能实现 基础功能包……装饰器模式扩展功能,ObjectWrapperFactory,DefaultReflectorFactory,参数解析策略模式,BaseTypeHandler模版模式,代理模式,logging适配器模式 配置解析包……初始化,builder 构造者模式mapping包,SQL语句处理功能,scripting包完成解析(OGNL ),datasource包 核心操作包……参数解析、数据库查询、结果映射,缓存、懒加载、鉴别器处理、主键自增、插件支持(责任链模式),事务,cursor 开源……Guava,Tomcat,Redis,Dubbo,React

★★★☆☆

思想不错,对应一个项目在猜测功能的基础上,先对代码分类,了解各类的功能及实现,在这个过程中使用猜测法,工具断点调试,纵向横向,自底向上,依赖与被依赖等方法来阅读,最后领会设计意图和模式,明白自己与优秀项目的区别

★★★★★

这本书很适合没有读过源码的人读。项目结构、功能划分、基础知识介绍、UML、具体代码都提供了,一步一步引人入胜。读者不会读得一头雾水,导致完全看不下去。当然最后的收获还是得靠自己。慢慢来,不要急。掌握通用原理,其他技术的掌握也就快啦。

书籍信息

作者易哥
出版社电子工业出版社
出版时间2020-07-01
ISBN9787121391460
分类计算机-计算机综合
格式EPUB
完结状态连载中
章节数37