
MyBatis
文章平均质量分 95
我乐了.
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深入分析动态 SQL 语句解析全流程(下)
我们紧接上一讲的内容,往后介绍了 SqlNode 接口剩余的实现类,其中包括 ForeachSqlNode、ChooseSqlNode 等,这些 SqlNode 实现类都对应我们常用的动态 SQL 标签。接下来,我们还介绍了 SqlSourceBuilder 以及 SqlSource 接口的内容,其中针对不同类型的 SQL 语句,MyBatis 抽象出了不同的 SqlSource 实现类,也就是文中介绍的 DynamicSqlSource、RawSqlSource 以及 StaticSqlSource。原创 2024-01-16 17:26:43 · 465 阅读 · 0 评论 -
深入分析动态 SQL 语句解析全流程(上)
这一讲我们重点介绍了 MyBatis 中动态 SQL 语句中涉及的核心内容。首先,说明了动态 SQL 语句中使用的 OGNL 表达式语言,这样你就了解了动态 SQL 语句中占位符的处理逻辑。然后,介绍了 DynamicContext 对象,其中维护了解析动态 SQL 语句上下文信息;随后我还分析了组合模式,因为它是 MyBatis 组合各动态 SQL 节点的设计思想。最后,讲解了 TextSqlNode、IfSqlNode、TrimSqlNode 等多个 SqlNode 节点的实现。原创 2024-01-16 17:24:46 · 1159 阅读 · 0 评论 -
鸟瞰 MyBatis初始化,把握 MyBati 启动流程脉络(下)
这一讲我们重点介绍了 MyBatis 在初始化过程中对 Mapper.xml 映射文件的解析。首先,我们着重介绍了 Mapper.xml 映射文件中对标签、标签以及标签(包括它的各个子标签)的解析流程,让我们知道 MyBatis是如何正确理解二级缓存的配置信息以及我们定义的各种映射规则。然后,我们详细分析了 MyBatis 对 Mapper.xml 映射文件中 SQL 语句标签的解析,其中涉及等标签的处理逻辑。原创 2024-01-16 17:09:33 · 402 阅读 · 0 评论 -
鸟瞰 MyBatis初始化,把握 MyBatis启动流程脉络(上)
核心步骤如下:解析。原创 2024-01-16 17:08:14 · 982 阅读 · 0 评论 -
基于 MyBatis缓存分析装饰器模式的最佳实践
在这一讲我们重点介绍了 MyBatis 中缓存的基础实现。首先,我们说明了 MyBatis 中缓存存在的必要性,以及其中使用到的经典设计模式——装饰器模式。然后,我们介绍了 Cache 这个顶层接口的设计以及 PerpetualCache 这个基础实现类的原理。最后,我们深入分析了 MyBatis 中常用的 Cache 装饰器实现,主要讲解了 BlockingCache、FifoCache、LruCache、SoftCache、WeakCache 这五个装饰器。原创 2024-01-16 17:06:32 · 881 阅读 · 0 评论 -
Mapper 文件与 Java 接口的优雅映射之道
从 Java 7 开始,除了反射之外,在 java.lang.invoke 包中新增了 MethodHandle 这个类,它的基本功能与反射中的 Method 类似,但它比反射更加灵活。反射是 Java API 层面支持的一种机制,MethodHandle 则是 JVM 层支持的机制,相较而言,反射更加重量级,MethodHandle 则更轻量级,性能也比反射更好些。原创 2024-01-16 17:04:59 · 1018 阅读 · 0 评论 -
深入数据源和事务,把握持久化框架的两个关键命脉
在这一讲,我重点介绍了 MyBatis 中非常重要的两个概念——数据源和事务。首先,讲解了 MyBatis 数据源模块中用到的工厂方法模式的基础知识。然后,深入分析了 DataSourceFactory 和 DataSource 接口的核心实现,其中重点介绍了 PooledDataSource 这个连接池实现。最后,还分析了 MyBatis 对数据库事务的一层简单抽象,也就是 Transaction 接口及其实现,这部分内容还是比较简单的。原创 2024-01-16 17:03:06 · 441 阅读 · 0 评论 -
日志框架千千万,MyBatis都能兼容的秘密是什么?
在这一讲中,我们主要介绍的是 MyBatis 基础模块中的日志模块。首先,介绍了适配器模式的核心知识点,这也是日志模块底层的设计思想。然后,说明了日志模块是如何基于适配器模式集成多种三方日志框架的。接下来,详细讲解了静态代理模式以及 JDK 动态代理的实现原理。最后,深入分析了 JDBC Logger 是如何基于 JDK 动态代理实现日志功能的。原创 2024-01-16 17:01:41 · 779 阅读 · 0 评论 -
数据库类型体系与 Java 类型体系之间的“爱恨情仇”
在这一讲我们重点介绍了 MyBatis 中 JdbcType 与 Java 类型之间转换的相关实现。首先,介绍了 JdbcType 与 Java 类型之间的常见映射关系,以及两种类型之间转换的基础知识;然后,深入分析了 TypeHandler 接口及其核心实现,了解了两种类型转换的原理;接下来,又讲解了 TypeHandler 的注册和查询机制,明确了 MyBatis 是如何管理和使用众多的 TypeHandler 实现;最后,分析了 MyBatis 中的别名实现。原创 2024-01-16 17:00:04 · 960 阅读 · 0 评论 -
MyBatis反射工具箱:带你领略不一样的反射设计思路
这一讲我们重点介绍了 MyBatis 中的反射工具箱。首先,我们介绍了反射工具箱中最核心、最底层的 Reflector 类的核心实现;接下来介绍了反射工具箱在 Reflector 基础之上提供的各种工具类,其中包括 ObjectFactory 工厂类、ObjectWrapper 包装类以及记录元数据的 MetaClass、MetaObject 等。它们彼此联系紧密,希望你在学习过程中能将它们的各个知识点串联起来,灵活运用。原创 2024-01-16 16:58:24 · 373 阅读 · 0 评论 -
MyBatis源码环境搭建及整体架构解析
完成 MyBatis 源码环境搭建之后,我再来带你分析一下 MyBatis 的架构。MyBatis 分为三层架构,分别是基础支撑层、核心处理层和接口层,如下图所示:MyBatis 三层架构图首先,我带你安装了最新版本的 MySQL 数据库,并成功启动了 MySQL 实例,你可以按照我所列的步骤一步一步去操作、去实现。其次,我又下载了 MyBatis 的源码并导入 IDEA 中,这个不是特别麻烦,还是比较好操作的。原创 2024-01-16 16:56:51 · 990 阅读 · 0 评论 -
订单系统持久层示例分析,20 分钟带你快速上手MyBatis
在这一讲,我们介绍了如何使用 MyBatis 实现简易订单系统的持久化层:首先介绍了订单系统 domain 层的设计,将用户、订单、商品等业务概念抽象成了对应的 Customer、Order、Product 等 Java 类;接下来分析了订单系统持久层中数据库表的设计,主要是从关系模型角度抽象业务概念;随后又讲解了订单系统的 DAO 接口层,定义了操作数据的基本方法;最后我们提供了一个 Service 类去实现简单的业务逻辑以及相关的测试用例。原创 2024-01-16 16:54:51 · 471 阅读 · 0 评论 -
常见持久层框架赏析,到底是什么让你选择 MyBatis?
在这一讲,我们重点介绍了 3 种常见的 ORM 持久化框架,那在实际工作中我们又应该如何选择合适的持久层框架呢?从性能角度来看,Hibernate、Spring Data JPA 在对 SQL 语句的掌控、SQL 手工调优、多表连接查询等方面,不及 MyBatis 直接使用原生 SQL 语句方便、高效;从可移植性角度。原创 2024-01-16 16:52:43 · 846 阅读 · 0 评论