返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:

  • 正版 通用源码阅读指导书——MyBatis源码详解 易哥 电子工业出版
  • 新华书店旗下自营,正版全新
    • 作者: 易哥著 | 易哥编 | 易哥译 | 易哥绘
    • 出版社: 电子工业出版社
    • 出版时间:2019-04-01
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    美阅书店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品参数
    • 作者: 易哥著| 易哥编| 易哥译| 易哥绘
    • 出版社:电子工业出版社
    • 出版时间:2019-04-01
    • 版次:null
    • 印次:1
    • 印刷时间:2020-08-01
    • 字数:640000
    • 页数:14
    • 开本:26开
    • ISBN:9787121391460
    • 版权提供:电子工业出版社
    • 作者:易哥
    • 著:易哥
    • 装帧:平装
    • 印次:1
    • 定价:100.00
    • ISBN:9787121391460
    • 出版社:电子工业出版社
    • 开本:26开
    • 印刷时间:2020-08-01
    • 语种:中文
    • 出版时间:2019-04-01
    • 页数:14
    • 外部编号:9840038
    • 版次:null
    • 成品尺寸:暂无

    第1篇 背景介绍 第1章 源码阅读 2 1.1 源码阅读的意义 2 1.2 源码阅读的方法 2 1.3 开源软件 3 1.4 MyBatis源码 4 1.5 本书结构 5 1.5.1 背景知识 5 1.5.2 文件的指代 5 1.5.3 方法的指代 8 第2章 MyBatis概述 10 2.1 背景介绍 10 2.1.1 传统数据库连接 10 2.1.2 ORM框架 11 2.1.3 MyBatis的特点 12 2.2 快速上手 12 2.2.1 MyBatis包的引入 14 2.2.2 MyBatis的简单配置 15 2.2.3 基于MyBatis的数据库操作 16 2.3 MyBatis的核心功能分析 17 第3章 MyBatis运行初探 20 3.1 初始化阶段追踪 23 3.1.1 静态代码块的执行 23 3.1.2 获取InputStream 24 3.1.3 配置信息读取 25 3.1.4 总结 27 3.2 数据读写阶段追踪 27 3.2.1 获得SqlSession 27 3.2.2 映射接口文件与映射文件的绑定 28 3.2.3 映射接口的代理 28 3.2.4 SQL语句的查找 31 3.2.5 查询结果缓存 31 3.2.6 数据库查询 33 3.2.7 处理结果集 36 3.2.8 总结 39 第4章 MyBatis源码结构概述 40 4.1 包结构 40 4.2 分组结构 40 第2篇 基础功能包源码阅读 第5章 exceptions包 44 5.1 背景知识 44 5.1.1 Java的异常 44 5.1.2 序列化与反序列化 45 5.2 Exception类 46 5.3 ExceptionFactory类 47 第6章 reflection包 48 6.1 背景知识 48 6.1.1 装饰器模式 48 6.1.2 反射 50 6.1.3 Type接口及其子类 54 6.2 对象工厂子包 55 6.3 执行器子包 57 6.4 属性子包 59 6.5 对象包装器子包 61 6.6 反射核心类 62 6.7 反射包装类 65 6.8 异常拆包工具 65 6.9 参数名解析器 68 6.10 泛型解析器 69 第7章 annotations包与lang包 76 7.1 Java注解详解 76 7.2 Param注解分析 78 第8章 type包 81 8.1 模板模式 82 8.2 类型处理器 83 8.2.1 类型处理器的基类与实现类 83 8.2.2 TypeReference类 85 8.3 类型注册表 86 第9章 io包 89 9.1 背景知识 89 9.1.1 单例模式 89 9.1.2 代理模式 89 9.1.3 静态代理 90 9.1.4 VFS 92 9.2 VFS实现类 92 9.2.1 DefaultVFS类 94 9.2.2 JBoss6VFS类 94 9.3 类文件的加载 96 9.4 ResolverUtil类 97 第10章 logging包 100 10.1 背景知识 100 10.1.1 适配器模式 100 10.1.2 日志框架与日志级别 102 10.1.3 基于反射的动态代理 103 10.2 Log接口 105 10.3 Log接口的实现类 107 10.4 LogFactory 108 10.5 JDBC日志打印 109 第11章 parsing包 113 11.1 背景知识 113 11.1.1 XML文件 113 11.1.2 XPath 115 11.2 XML解析 116 11.3 文档解析中的变量替换 118 第3篇 配置解析包源码阅读 第12章 配置解析概述 124 第13章 binding包 128 13.1 数据库操作的接入 128 13.1.1 数据库操作的方法化 129 13.1.2 数据库操作方法的接入 133 13.2 抽象方法与数据库操作节点的关联 134 13.3 数据库操作接入总结 136 13.3.1 初始化阶段 136 13.3.2 数据读写阶段 137 13.4 MyBatis与Spring、Spring Boot的整合 137 第14章 builder包 139 14.1 建造者模式 139 14.2 建造者基类与工具类 142 14.3 SqlSourceBuilder类与StaticSqlSource类 143 14.4 CacheRefResolver类和ResultMapResolver类 145 14.4.1 CacheRefResolver类 145 14.4.2 ResultMapResolver类 146 14.5 ParameterExpression类 148 14.6 XML文件解析 149 14.6.1 XML文件的声明解析 150 14.6.2 配置文件解析 151 14.6.3 数据库操作语句解析 153 14.6.4 Statement解析 155 14.6.5 引用解析 157 14.7 注解映射的解析 159 14.7.1 注解映射的使用 159 14.7.2 注解映射解析的触发 160 14.7.3 直接注解映射的解析 164 14.7.4 间接注解映射的解析 164 第15章 mapping包 169 15.1 SQL语句处理功能 169 15.1.1 MappedStatement类 169 15.1.2 SqlSource类 170 15.1.3 BoundSql 171 15.2 输出结果处理功能 171 15.2.1 ResultMap类 172 15.2.2 ResultMapping类 173 15.2.3 Discriminator 174 15.3 输入参数处理功能 176 15.4 多数据库种类处理功能 176 15.5 其他功能 178 第16章 scripting包 179 16.1 OGNL 179 16.2 语言驱动接口及语言驱动注册表 183 16.3 SQL节点树的组建 186 16.4 SQL节点树的解析 189 16.4.1 OGNL辅助类 189 16.4.2 表达式求值器 193 16.4.3 动态上下文 194 16.4.4 SQL节点及其解析 196 16.5 再论SqlSource 202 16.5.1 SqlSource的生成 202 16.5.2 DynamicSqlSource的转化 205 16.5.3 RawSqlSource的转化 206 16.5.4 SqlSource接口的实现类总结 207 第17章 datasource包 208 17.1 背景知识 208 17.1.1 java.sql包和javax.sql包 208 17.1.2 DriverManager 209 17.1.3 DataSource 209 17.1.4 Connection 210 17.1.5 Statement 211 17.2 数据源工厂接口 211 17.3 JNDI数据源工厂 213 17.4 非池化数据源及工厂 214 17.4.1 非池化数据源工厂 214 17.4.2 非池化数据源 216 17.5 池化数据源 218 17.5.1 池化数据源类的属性 218 17.5.2 池化连接的给出与收回 220 17.5.3 池化连接 228 17.6 论数据源工厂 229 第4篇 核心操作包源码阅读 第18章 jdbc包 232 18.1 AbstractSQL类与SQL类 232 18.1.1 SafeAppendable内部类 232 18.1.2 SQLStatement内部类 233 18.1.3 AbstractSQL类 235 18.1.4 SQL类 236 18.2 SqlRunner类 237 18.3 ScriptRunner类 240 18.4 jdbc包的独立性 241 第19章 cache包 243 19.1 背景知识 243 19.1.1 Java对象的引用级别 243 19.1.2 ReferenceQueue类 244 19.2 cache包结构与Cache接口 247 19.3 缓存键 248 19.3.1 缓存键的原理 248 19.3.2 缓存键的生成 251 19.4 缓存的实现类 252 19.5 缓存装饰器 252 19.5.1 同步装饰器 253 19.5.2 日志装饰器 253 19.5.3 清理装饰器 254 19.5.4 阻塞装饰器 259 19.5.5 定时清理装饰器 262 19.5.6 序列化装饰器 263 19.6 缓存的组建 264 19.7 事务缓存 267 19.8 MyBatis缓存机制 271 19.8.1 一级缓存 271 19.8.2 二级缓存 274 19.8.3 两级缓存机制 277 第20章 transaction包 279 20.1 事务概述 279 20.2 事务接口及工厂 280 20.3 JDBC事务 282 20.4 容器事务 283 第21章 cursor包 284 21.1 Iterable接口与Iterator接口 284 21.2 MyBatis中游标的使用 285 21.3 游标接口 285 21.4 默认游标 286 21.4.1 CursorStatus内部类 287 21.4.2 ObjectWrapperResultHandler内部类 287 21.4.3 CursorIterator内部类 288 21.4.4 DefaultCursor外部类 289 第22章 executor包 293 22.1 背景知识 293 22.1.1 基于cglib的动态代理 293 22.1.2 javassist框架的使用 295 22.1.3 序列化与反序列化中的方法 296 22.1.4 ThreadLocal 302 22.1.5 存储过程 305 22.1.6 Statement及其子接口 306 22.2 主键自增功能 308 22.2.1 主键自增的配置与生效 308 22.2.2 Jdbc3KeyGenerator类 310 22.2.3 SelectKeyGenerator类 312 22.3 懒加载功能 316 22.3.1 懒加载功能的使用 316 22.3.2 懒加载功能的实现 318 22.3.3 懒加载功能对序列化和反序列化的支持 325 22.4 语句处理功能 329 22.4.1 MyBatis对多语句类型的支持 329 22.4.2 MyBatis的语句处理功能 331 22.5 参数处理功能 333 22.6 结果处理功能 334 22.7 结果集处理功能 336 22.7.1 MyBatis中多结果集的处理 337 22.7.2 结果集封装类 340 22.7.3 结果集处理器 341 22.8 执行器 347 22.8.1 执行器接口 348 22.8.2 执行器基类与实现类 348 22.9 错误上下文 352 第23章 session包 355 23.1 SqlSession及其相关类 355 23.1.1 SqlSession的生成链 356 23.1.2 DefaultSqlSession类 357 23.1.3 SqlSessionManager类 358 23.2 Configuration类 361 23.3 其他类 364 第24章 plugin包 366 24.1 责任链模式 366 24.2 MyBatis插件开发 368 24.3 MyBatis拦截器平台 370 24.4 MyBatis拦截器链与拦截点 373 第5篇 总结与展望 第25章 源码阅读总结 378 25.1 前期准备 378 25.1.1 工具准备 378 25.1.2 项目选择 378 25.1.3 项目使用 379 25.2 项目初探 379 25.3 源码阅读 380 25.3.1 模块分析 380 25.3.2 模块归类 380 25.3.3 自底向上 380 25.3.4 合理猜测 381 25.3.5 类比阅读 381 25.3.6 善于汇总 381 25.3.7 网格阅读 382 第26章 开源项目 383 26.1 Guava 383 26.2 Tomcat 384 26.3 Redis 384 26.4 Dubbo 385 26.5 React 385

    易哥,毕业于浙江大学、山东大学。不错软件系统架构师、网络工程师、数据库工程师、软件测试工程师、注册电气工程师。 在校成绩优异。曾获得国家奖学金两次,一等奖学金四次。科技创新大赛一等奖三次,以及五四青年科学奖等。主要科研方向为机器学习、分布式算法、容错算法在无线传感网络中的应用,相关论文获得lEEE通信协会很好论文奖。 曾担任网站技术部门负责人,具有丰富的互联网开发经验。先后设计和实现了众多系统和平台,也是活跃的开源开发者。 现专注软件系统架构设计与后端开发,著有《通用源码阅读指导书》《高性能架构之道》等书。

    有一段时间,我觉着我非要阅读开源项目的源码不可。 那时,我在公司负责设计和开发了很多系统。如果连大学时带领大家开发和维护学校也算上的话,那我进行软件开发已经整整十年了。在这十年里,我对自己设计和开发的系统都很有信心,但有一个疑惑一直萦绕在我心头:我不知道,我的架构和世界*良架构之间的差距到底有多大。 阅读开源项目的源码能给我答案。 许多的开源项目历经数千名开发者的数万次提交,被数亿用户使用。这些项目从可扩展性、可靠性和可用性等各个角度考量,都是十分优良的。通过阅读这些项目的源码,我能找到自己在软件设计和开发上的不足。 于是我开始了我的源码阅读计划。 在阅读源码的过程中,我看过不少资料。但很多资料对源码中简单的部分讲解得细致入微,而对复杂的部分则避而不谈或含糊其辞。在阅读源码的过程中,我也走过不少弯路,经常在一个难点中挣扎很久不能前进。 当然,阅读源码也让我收获颇丰。它不仅让我知道了自己的设计与优良设计之间的差距,还让我学到了许多架构技巧和编程知识。在源码阅读的过程中,我也总结出了许多经验和方法。因此,我决定写这本书,将经验和方法分享出来,指引许多和我一样前行在源码阅读道路上的人。 源码阅读首先要选定相应的源码作为材料。从项目的成熟度、涉及面、应用广度、项目规模等多方面考虑,本书*终选中MyBatis源码。因此,本书将以阅读MyBatis源码为例,介绍源码阅读的经验和方法。 在本书的写作中,我努力做到详尽而不啰唆。本书以包为单位,对MyBatis源码中的300多个类进行了介绍。在此过程中,对于简单或重复的类一笔带过,但对于复杂的类,则是逐方法、逐行地进行分析,力求让大家读得顺、读得懂、有收获。 本书分为五篇,各篇主要内容如下。 第1篇为背景介绍,包括第1~4章。 第1章介绍了源码阅读的意义和方法。 第2章对MyBatis的背景和快速上手方法进行了介绍。这一章的内容是简单但重要的。对于任何一个软件,其背景对应于软件的“设计需求”,其使用对应于软件的“主要功能”。把握一个软件的设计需求和主要功能对于阅读软件的源码很有帮助。 第3章中使用断点调试方法对MyBatis的执行过程进行了追踪。该章内容有助于我们了解整个MyBatis的内部框架。 第4章对MyBatis源码结构进行了介绍,并根据源码包的功能对包进行了分类。 第2篇为基础功能包源码阅读,包括第5~11章。 在这一篇中,我们对基础功能包中的源码进行了阅读。基础功能包相对独立,与MyBatis的核心逻辑耦合小,比较适合作为源码阅读的切入点。在阅读这些源码时,我们也会逐步介绍一些阅读源码常用的方法和技巧。 第5章介绍了exceptions包的源码,可以通过该包了解MyBatis的整个异常体系。 第6章介绍了reflection包的源码。该包基于反射提供了创建对象、修改对象属性、调用对象方法等功能。这些功能在MyBatis的参数处理、结果处理等环节都发挥了重要的作用。 第7章介绍了annotations包与lang包的源码。这两个包中全是注解类。我们将通过对Java注解的学习详细了解每个注解类的含义。*后,我们还通过源码分析了注解类如何在MyBatis的运行中发挥作用。 第8章介绍了type包的源码。通过这一章将了解MyBatis如何组织和实现类型处理器,以完成对各种类型数据的处理。 第9章介绍了io包的源码。通过该包将了解到MyBatis如何完成外部类的筛选和载入。 第10章介绍了logging包的源码。logging包不仅为MyBatis提供了日志记录功能,还提供了获取和记录JDBC中日志的功能。通过这一章将了解这些功能的实现细节。 第11章介绍了parsing包的源码。通过这一章将了解MyBatis如何完成XML文件的解析。 第3篇为配置解析包源码阅读,包括第12~17章。 第12章介绍了配置解析相关类的分类方法。配置解析相关类可以按照类的功能划分为解析器类和解析实体类。 第13章介绍了binding包的源码。该包负责将SQL语句接入映射接口。 第14章介绍了builder包的源码。该包中的建造者基类和工具类为MyBatis基于建造者模式建造对象提供了基础。此外,该包还完成了XML文件和注解映射的解析工作。 第15章介绍了mapping包的源码。该包完成了SQL语句的处理、输入参数的处理、输出结果的处理等功能,并为MyBatis提供了多数据库支持的能力。 第16章介绍了scripting包的源码。就是在这个包中,复杂的SQL节点被逐步解析为纯粹的SQL语句,该章将详细讲解这一解析过程。 第17章介绍了datasource包的源码。该包包含了MyBatis中与数据源相关的类,包括非池化数据源、池化数据源、数据源工厂等。也正是通过该包,MyBatis完成了和数据库的对接。 第4篇为核心操作包源码阅读,包括第18~24章。 在这一篇中,将详细介绍MyBatis的核心操作包。 第18章介绍了jdbc包的源码。该包仅使用六个类便为MyBatis提供了运行SQL语句和脚本的能力。 第19章介绍了cache包的源码。该包向我们展示了MyBatis如何使用装饰器模式为用户提供丰富的、可配置的缓存,并且该章还从功能维度出发详细介绍了MyBatis的两级缓存机制。 第20章介绍了transaction包的源码。该包为MyBatis提供了内部和外部的事务支持。 第21章介绍了cursor包的源码。通过该包,MyBatis能将查询结果封装为游标形式返回。 第22章介绍了executor包的源码。executor包是MyBatis中*为重要也是*复杂的包。在这一章中,首先,以子包为单位分别介绍了MyBatis的主键自增功能、懒加载功能、语句处理功能、参数处理功能、结果处理功能和结果集处理功能。然后,在此基础上对MyBatis中执行器的源码进行了阅读。*后,阅读了MyBatis中错误上下文的源码,了解MyBatis如何及时地保留错误发生时的现场环境。 第23章介绍了session包的源码。session包是一个对外接口包,是用户在使用MyBatis时接触*多的包。 第24章介绍了plugin包的源码。在该章中我们编写了一个插件,然后通过源码详细了解了MyBatis插件的实现原理及MyBatis插件平台的架构。 第5篇为总结与展望,包括第25、26章。 第25章对阅读MyBatis源码过程中的方法和技巧进行了总结。 第26章从项目的成熟度、涉及面、应用广度和规模等角度综合考量,为大家了一些的开源项目。学习完本书后,大家可以从这些项目中挑选一些进行源码阅读。 源码阅读毕竟是一个对知识广度和深度都有较高要求的工作,为了大家能够顺利地阅读MyBatis的源码,我们会在很多章节之前先介绍该章节源码涉及的基础知识。掌握这些基础知识后再阅读相关源码则会轻松很多。 受篇幅所限,书中只能给出部分MyBatis源码。我们将完整的带中文注释的MyBatis源码整理成了开源项目,供大家与参考。该项目的地址为:https://github.com/yeecode/MyBatisCN。 为了让大家能更轻松地理解和掌握一些相对复杂的知识点,我们还准备了许多示例项目。地址为:https://github.com/yeecode/MyBatisDemo。 由于时间和水平有限,书中难免会有疏漏之处。您可以通过我的个人主页与我取得联系并进行交流,在那里也能看到我的*项目。我的个人主页地址为:http://yeecode.top。 通过阅读本书,您将详细了解MyBatis中每一个类的结构、原理和细节。但要注意,这只是我们阅读本书的额外收获。掌握源码阅读的方法和技巧,并将这些方法和技巧应用到其他项目的源码阅读工作、系统设计工作、软件开发工作中,这才是阅读本书的*终目的。 源码阅读是一项过程艰苦而结果可观的工作。每一个潜心阅读源码的开发者都值得尊敬,也希望本书能够在您阅读源码的过程中为您提供一些帮助,让您多一些收获。 加油!奋斗路上的你和我。 著 者

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购