MyBatis 源码分析
文章平均质量分 85
善守的大龙猫
昔之善战者,先为不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能为不可胜,不能使敌之必可胜。故曰:胜可知,而不可为!
成为专家!成为专家!
展开
-
Mybatis原理 - 标签解析
很多开源框架之所以能够流行起来,是因为它们解决了领域内的一些通用问题。但在实际使用这些开源框架的时候,我们都是要解决通用问题中的一个特例问题,所以这时我们就需要使用一种方式来控制开源框架的行为,这就是开源框架提供各种各样配置的核心原因之一。现在控制开源框架行为主流的配置方式就是 XML 配置方式和注解方式,MyBatis 有两方面的 XML 配置,一个是 mybatis-config.xml 配置文件中的整体配置,另一个是 Mapper.xml 配置文件中的 SQL 语句。原创 2024-01-20 21:28:59 · 937 阅读 · 0 评论 -
Mybatis缓存实现方式
在创建 SoftReference 对象的时候,我们可以为其关联一个引用队列,当这个 SoftReference 指向的对象被回收的时候,JVM 就会将这个 SoftReference 作为通知,添加到与其关联的引用队列,之后我们就可以从引用队列中,获取这些通知信息,也就是 SoftReference 对象。**而只被软引用指向的对象是在 JVM 内存紧张的时候才被回收,它是可以经历多次 GC 的,这就是两者最大的区别。**如果为 null,则表示这个软引用指向的对象在之前的某个时刻,已经被 GC 掉了;原创 2024-01-05 23:10:07 · 880 阅读 · 0 评论 -
Mybatis-Mapper文件与Java接口如何相互映射?
在Mybatis的使用过程中,我们会为每个 Mapper.xml 配置文件创建一个对应的 Mapper 接口,例如,订单系统示例中的 CustomerMapper.xml 配置文件与 CustomerMapper 接口,定义完 CustomerMapper 接口之后,我们无须提供 CustomerMapper 接口实现,就可以直接调用 CustomerMapper 对象的方法执行 CustomerMapper.xml 配置文件中的 SQL 语句。原创 2024-01-02 22:04:20 · 1503 阅读 · 0 评论 -
Mybatis 事务接口
在修改完成之后,我们需要提交事务,完成整个事务内的全部修改操作,如果修改过程中出现异常,我们也可以回滚事务,放弃整个事务中的全部修改操作。当我们从数据源中得到一个可用的数据库连接之后,就可以开启一个数据库事务了,事务成功开启之后,我们才能修改数据库中的数据。的实现,其中维护了事务关联的数据库连接以及数据源对象,同时还记录了事务自身的属性,例如,事务隔离级别和是否自动提交。方法都是空实现,事务的提交和回滚都是依靠容器管理的,这也是它被称为。在日常使用数据库事务的时候,我们最常用的操作就是提交和回滚事务,原创 2023-12-31 14:42:49 · 463 阅读 · 0 评论 -
深入Mybatis数据源
其中封装了真正的 java.sql.Connection 对象以及相关的代理对象,这里的代理对象就是通过JDK 动态代理产生的。下面来看 PooledConnection 中的核心字段。原创 2023-12-29 21:55:56 · 888 阅读 · 0 评论 -
Mybatis如何兼容各类日志?
我们主要介绍的是 MyBatis 基础模块中的日志模块。首先,介绍了适配器模式的核心知识点,这也是日志模块底层的设计思想。然后,说明了日志模块是如何基于适配器模式集成多种三方日志框架的。接下来,详细讲解了静态代理模式以及 JDK 动态代理的实现原理。最后,深入分析了 JDBC Logger 是如何基于 JDK 动态代理实现日志功能的。原创 2023-12-25 21:49:12 · 1014 阅读 · 0 评论 -
Mybatis-TypeHandler类型转换器
在这一讲我们重点介绍了 MyBatis 中 JdbcType 与 Java 类型之间转换的相关实现。首先,介绍了 JdbcType 与 Java 类型之间的常见映射关系,以及两种类型之间转换的基础知识,深入分析了 TypeHandler 接口及其核心实现,了解了两种类型转换的原理;接下来,又讲解了 TypeHandler 的注册和查询机制,明确了 MyBatis 是如何管理和使用众多的 TypeHandler 实现;最后,分析了 MyBatis 中的别名实现。原创 2023-12-23 22:40:09 · 967 阅读 · 0 评论 -
MyBatis 架构分析
MyBatis 的反射工具箱是在 Java 反射的基础之上进行的一层封装,为上层使用方提供更加灵活、方便的 API 接口,同时缓存 Java 的原生反射相关的元数据,提升了反射代码执行的效率,优化了反射操作的性能。另外,在 Java 生态中,就有很多优异开源的数据源可供选择,MyBatis 的数据源模块中也提供了与第三方数据源集成的相关接口,这也为用户提供了更多的选择空间,提升了数据源切换的灵活性。在后面的课程中,我还会深入讲解 MyBatis 与 Spring 集成的原理,其中就包括事务管理相关的集成。原创 2023-12-23 12:27:55 · 1256 阅读 · 0 评论 -
MyBatis -- 二级缓存
Mybatis中是先走二级缓存,再走一级缓存。二级缓存是跨线程的,所以必须是commit之后才进行生效,而一级缓存是线程内,所以不需要commit就可以生效。二级缓存在提交之前是有一个暂存区,在暂存区内进行操作,commit之后才真正操作缓存。二级缓存流程图...原创 2022-02-09 20:05:57 · 261 阅读 · 0 评论