MyBatis源码分析
文章平均质量分 92
MyBatis源码分析
xiaolyuh123
凡是过去,皆为序幕
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HikariCP 深度解析
核心优势:HikariCP 是高性能连接池,核心优势是快、轻量、可靠,Spring Boot 2.0+ 默认推荐使用;性能核心并发容器、零锁设计、精简代码、精细化连接管理;配置核心按 CPU 核心数配置,等于最大连接数,小于数据库连接超时时间;运维核心:监控活跃/空闲连接数、开启泄漏检测、配置合理的超时时间;适用场景:高并发、低延迟的互联网场景优先使用,需精细化监控可结合 Druid。配置:优先使用 Spring Boot 自动配置,核心参数按性能公式设置,避免过度配置;编码。原创 2026-01-22 16:16:32 · 658 阅读 · 0 评论 -
MyBatis 深度解析
选型对比:强调MyBatis的可控性(直接编写/优化SQL)、灵活性(动态SQL、结果集映射)、与遗留系统的兼容性(如需重用复杂SQL)。分库分表支持:结合ShardingSphere或MyCat,通过MyBatis插件拦截SQL,重写分片逻辑,或在XML中编写动态表名(如${tableName})。未来演进:随着云原生发展,探讨与JPA的混合使用(如简单CRUD用JPA,复杂查询用MyBatis),或向全托管数据库服务迁移时的调整策略。制定SQL审核流程,确保可维护性。原创 2025-03-02 22:30:53 · 618 阅读 · 0 评论 -
Spring Boot 集成 MyBatis 自定义插件
MyBatis 插件基于JDK 动态代理 + 责任链模式实现,允许在 SQL 执行的关键节点插入自定义逻辑(如 SQL 监控、性能统计、数据权限控制、SQL 加密/解密等)。MyBatis 仅允许拦截以下 4 大核心组件的指定方法,覆盖 SQL 执行全流程:MyBatis 自定义插件需遵循「实现接口 → 插件签名 → 注册插件」三步原则,缺一不可: 是 MyBatis 插件的核心接口,需实现以下 3 个方法:通过 + 注解声明「拦截哪个组件、哪个方法、哪些参数」,是 MyBatis 识别插件的关键。将原创 2021-05-14 17:51:35 · 3982 阅读 · 0 评论 -
Mybatis 源码(六)Mybatis-Spring框架实现原理
我在使用mybatis-spring过程中一直有一个疑问,在Mybatis 源码(一)总揽中我提到过,SqlSession和Mapper对象的声明周期是方法级别的,也就是每个请求的SqlSession和Mapper对象是不一样的,是一个非单例的Bean。但是与Spring集成后,为什么我们可以直接注入Mapper对象,如果通过直接注入的话Mapper对象却成了单例的了?我们带着疑问来看下Myba...原创 2019-11-28 11:35:47 · 570 阅读 · 0 评论 -
Mybatis 源码(五)Mybatis 中的数据读写
数据读写的本质不管是哪种ORM框架,数据读写其本质都是对JDBC的封装,其目的主要都是简化JDBC的开发流程,进而让开发人员更关注业务。下面是JDBC的核心流程:注册 JDBC 驱动(Class.forName(“XXX”);)打开连接(DriverManager.getConnection(“url”,“name”,“password”))根据连接,创建 Statement(conn....原创 2019-11-28 11:35:01 · 487 阅读 · 0 评论 -
Mybatis 源码(四)Mybatis Excuter框架
我们在上一章介绍到,Mybatis会将所有数据库操作转换成iBatis编程模型,通过门面类SqlSession来操作数据库,但是我们深入SqlSession源码我们会发现,SqlSession啥都没干,它将数据库操作都委托给你了Excuter,如图:Excuter框架类图BaseExecutor在BaseExecutor定义了Executor的基本实现,如查询一级缓存,事务处理等不变的...原创 2019-11-28 11:34:02 · 568 阅读 · 0 评论 -
Mybatis 源码(三)Mybatis 代理模块
在使用Mybatis的时候大家可能都有一个疑问,为什么只写Mapper接口就能操作数据库?它的主要实现思想是:使用动态代理生成实现类,然后配合xml的映射文件中的SQL语句来实现对数据库的访问。Mybatis编程模型Mybatis是在iBatis上演变而来ORM框架,所以Mybatis最终会将代码转换成iBatis编程模型,而 Mybatis 代理阶段主要是将面向接口编程模型,通过动态代理转...原创 2019-11-28 11:33:22 · 438 阅读 · 0 评论 -
Mybatis 源码(二)Mybatis 初始化
Mybatis 初始化是由SqlSessionFactoryBuilder来完成的,主要的工作解析XML文件,并将解析的类容封装到Configuration类中,最后将Configuration类封装到SqlSessionFactory中并返回,自此初始化完成。完成对XML文件解析的是XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder三个类...原创 2019-11-28 11:32:45 · 455 阅读 · 0 评论 -
Mybatis 源码(一)总揽
整体架构这只是MySql的一个逻辑划分架构。接口层:通SqlSession类提供对数据库访问能力,隐藏了后续复杂的处理逻辑。核心处理层:主要负责执行SQL,并返回结果。基础支撑层:对一些基础功能进行封装,为核心处理层提供服务。代码结构Mybatis的代码结构非常工整,堪称完美的java编程规范教科书,当我们深入源码我们会发现,Mybatis的注释量相当少,那是因为基本上我们可以...原创 2019-11-28 11:32:03 · 473 阅读 · 0 评论 -
Mybatis 配置详解&JNDI与连接池(Pool)的区别
核心差异:JNDI是「资源查找方式」(解决“怎么拿”数据源),连接池是「连接管理机制」(解决“怎么高效用”连接);常用方式:普通Spring Boot Jar应用直接用连接池;核心价值:JNDI解耦配置与应用,连接池提升数据库访问性能;底层关联:无论是否用JNDI,生产环境的DataSource几乎都是「带连接池的实现」(无连接池的DataSource仅用于测试)。原创 2019-11-28 11:31:25 · 481 阅读 · 0 评论 -
ORM 框架之基石-JDBC
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。初始化H2数据库public class BaseTest { protected ...原创 2019-11-28 11:29:24 · 440 阅读 · 1 评论 -
mybatis-plus 2.x升级3.x注意点
2.0到3.0主要升级的点:升级 JDK 8 + 优化性能 Wrapper 支持 lambda 语法模块化 MP 合理的分配各个包结构重构注入方法,支持任意方法精简注入模式全局配置下划线转换消灭注入 AS 语句改造 Wrapper 更改为 QueryWrapper UpdateWrapper重构 分页插件 消灭固定分页模型,支持 Mapper 直接返回 IPage 接口新增 Res...原创 2019-11-28 11:28:16 · 19290 阅读 · 3 评论
分享