![](https://img-blog.csdnimg.cn/20210223133946730.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mybatis 源码分析
文章平均质量分 93
Mybatis是一款优秀的ORM持久层框架,帮助开发封装了与JDBC数据层的交互,极大程度上提高了程序员开发WEB项目的效率。此专栏从功能组件入手,一点一点解析Mybatis整体组成
马丁不会代码
如何简洁编码?
展开
-
面试:如何通过 MyBatis 查询千万数据并保证内存不溢出?
由于现在 ORM 框架的成熟运用,很多小伙伴对于 JDBC 的概念有些薄弱,ORM 框架底层其实是通过 JDBC 操作的 DBJDBC(JavaDataBase Connectivity)是 Java 数据库连接, 说的直白点就是使用 Java 语言操作数据库由 SUN 公司提供出一套访问数据库的规范 API, 并提供相对应的连接数据库协议标准, 然后 各厂商根据规范提供一套访问自家数据库的 API 接口文章大数据量操作核心围绕 JDBC 展开,目录结构如下:MySQL JDBC 大数据量操作.原创 2021-01-04 10:40:06 · 8416 阅读 · 6 评论 -
【剑指Offer】一文搞懂项目使用的 Mybatis 架构设计(值得收藏)
Mybatis 架构设计分享1、带着问题思考本次分享2、持久层的那些事2.1 JDBC什么是 JDBCJDBC 原理2.2 Mybatis什么是 MybatisMybatis 与 JDBC 的关系3、Mybatis 关键词说明SqlSessionSqlSessionFactorySqlSessionFactoryBuilderConfigurationMappedStatementExecutorParameterHandlerStatementHandlerResultSetHandlerIntercep原创 2020-09-03 21:19:26 · 801 阅读 · 1 评论 -
Mybatis 中理解分页如何使用 Interceptor 接口实现
通过 Mybatis 执行分页 SQL 有两种实现方式, 一种是编写 SQL 时添加 LIMIT, 一种是全局处理01、SQL 分页<select id="getSubjectByPage" resultMap="resultAutoMap"> SELECT * FROM SUBJECT LIMIT #{CURRINDEX} , #{PAGESIZE}</select>02、拦截器分页上文说到, Mybatis 支持了插件扩展机制, 可以拦截到具体对象的方法以及对原创 2020-09-03 21:15:49 · 513 阅读 · 0 评论 -
Mybatis Sql 执行全链路, 跟踪返回结果
01、前言根据 Mybatis SQL 执行流程图进一步了解02、Mybatis Sql 的执行过程大致可以分为以下几步操作:???? 在前面的内容中, 知道了 Mybatis Mapper 是动态代理的实现, 查看 SQL 执行过程, 就需要紧跟实现了 InvocationHandler 的 MapperProxy 类03、执行增删改查@Select(" SELECT * FROM SUBJECT WHERE ID = #{id}")PrimitiveSubject getSubjec原创 2020-09-03 21:13:19 · 806 阅读 · 0 评论 -
Mybatis 中 Mapper 接口的存储与实现
01、前言在平常我们写的 SSM 框架中, 定义了 Mapper 接口与 .xml 对应的 SQL 文件, 在 Service 层直接注入 xxxMapper 就可以了也没有看到像 JDBC 操作数据库的操作, Mybatis 在中间是如何为我们省略下这些重复繁琐的操作呢这里使用 Mybatis 源码中的测试类进行验证, 首先定义 Mapper 接口, 省事直接注解定义 SQL这里使用 SqlSession 来获取 Mapper 操作数据库, 测试方法如下02、创建 SqlSession#1原创 2020-09-03 21:09:47 · 870 阅读 · 0 评论 -
Mybatis 中 .xml 文件定义 <select|insert|update|delete> 语句如何解析
1、前言Mybatis 在创建 SqlSessionFactory 时, XMLConfigBuilder 会解析 Mybatis-config.xml 配置文件2、Mybatis 相关解析器Mybatis 解析器模块中定义了相关解析器的抽象类 BaseBuilder, 不同的子类负责实现解析不同的功能, 使用了 Builder 设计模式XMLConfigBuilder 负责解析 mybatis-config.xml 配置文件XMLMapperBuilder 负责解析业务产生的 xxxMappe原创 2020-09-03 21:06:47 · 790 阅读 · 0 评论 -
什么是持久层? JDBC 演变的 Mybatis 架构分析
前言ORM 持久层指的是:将业务数据存储到磁盘,也具备长期存储能力,只要磁盘不损坏,如果在断电情况下,重启系统仍然可以读取数据01、JDBC1.1 什么是 jdbcJDBC(JavaDataBase Connectivity)就是 Java 数据库连接, 说的直白点就是使用 Java 语言操作数据库本来我们是通过控制台或客户端操作的数据库, JDBC 是用 Java 语言来发送 SQL 语句1.2 Jdbc 原理最初 SUN 公司希望提供 一套能够适用所有数据库的 API, 但是在实际操作中却原创 2020-08-24 13:21:09 · 652 阅读 · 0 评论 -
你不知道的 mybatis 四大核心组件!
01、Executor一个 SqlSession 对应一个 Executor 对象,这个对象负责增删改查的具体操作1.1 组件类图如图所示, Exeutor 是一个顶层的接口, 有两个实现类, 分别是 BaseExecutor、CachingExecutor1.2 BaseExeutor抽象类, 采用了模版设计模式, 实现了 Exeutor 接口, 针对接口提供了默认实现, 并提供了额外的抽象方法, 由不同的实现类来负责实现不同的功能抽象类下有三(其实是四个)个不同功能的实现类: Simpl.原创 2020-08-16 21:35:17 · 1453 阅读 · 0 评论 -
mybatis mapper 接口注册流程源码解析
01、前言在正式介绍 mapper 接口注册源码分析之前, 首先来介绍什么是 mapper, 再其次说明下 mapper 与 sql 关联的两种方式可能比较多的同学使用的是 xml 的方式, 没有接触过注解定义; 注解定义SQL语句本质上是一种轻量级的配置02、mapper 接口2.1 什么是 mapper 接口mapper 接口是用于执行自定义SQL语句相关的方法可以在 mapper 接口定义方法上添加SQL方法注解或者使 mapper 接口绑定 xml 文件2.2 使用注解定义 sql.原创 2020-08-06 20:40:14 · 412 阅读 · 0 评论 -
mybatis @SelectProvider 注解, 打赌你没有用过
01、前言为什么会写这篇文章, 因为在看到 MapperAnnotationBuilder 构造方法初始化时, 发现了四个从未见过的注解public MapperAnnotationBuilder(Configuration configuration, Class<?> type) { ... sqlAnnotationTypes.add(Select.class); sqlAnnotationTypes.add(Insert.class); sqlAnn.原创 2020-07-28 23:32:52 · 2015 阅读 · 1 评论 -
mybatis configuration 核心构建流程
configuration 配置类就是 mybatis 的核心大管家, mybatis 核心的配置信息基本上都存放在这里01、Configuration 创建在之前解析 SqlSessionFactory 的时候, build() 实现并没有详细解读, 而今天源码解析的主人公 Configuration 就在此方法中被初始化这里以字节流的 build() 重载方法构建举例public SqlSessionFactory build(InputStream inputStream, String..原创 2020-07-10 20:10:25 · 964 阅读 · 0 评论 -
Mybatis SqlSession 如果面试官问如何创建?
阅读文章能够收获SqlSessionFactoryBuilder,SqlSessionFactory、SqlSession相关知识“建议结合mybatis 源码[1]、mybatis 官网[2]阅读, 可以下载不同版本的源码, 本文根据3.4.x解读, 不同版本源码存在细微差别为防止不必要的麻烦, 直接下载3.4.x版本的 mybatis 源码, 文章中测试代码是在org.apache.ibatis.autoconstructor目录下建立新的文件夹进行测试01、相关概...原创 2020-07-05 00:17:09 · 5063 阅读 · 0 评论 -
只知道项目中使用了Mybatis,却不知道为什么?
01、什么是框架众所周知,mybatis是一个ORM框架。那么什么是框架呢框架就是我们软件开发中的一套解决方案,不同的框架同来解决不同的问题1.1 框架的作用框架内部封装很多的细节,使开发者可以使用极简的方式来完成自己的功能,大大的提高了开发效率02、什么是MyBatis那什么是mybatis呢?mybatis是一款优秀的ORM(持久层)框架,使用Java语言编写前身是apache的一个开源项目iBatis,2010年迁移到google code并正式改名为myb..原创 2020-06-17 15:10:01 · 1704 阅读 · 0 评论