mybatis 原理分析
分析mybatis是如何工作的,详细的介绍每一阶段的工作过程和特点。
三木加两木
2021加油!拿到大厂offer!!!
展开
-
mybatis原理分析(九)---懒加载
文章目录1.概述2.懒加载使用3.懒加载触发条件4.懒加载失效4.1 set4.2 序列化5. 懒加载实现原理1.概述懒加载是为改善,解析对象属性时大量的嵌套子查询的并发问题。设置懒加载后,只有在使用指定属性时才会加载,从而分散SQL请求。本文将从如何使用懒加载,懒加载触发条件,懒加载失效,懒加载原理方面展开。2.懒加载使用在嵌套子查询中指定 fetchType=“lazy” 即可设置懒加载。在满足触发条件的时候才会实现真正的加载。也可以在mybatis的配置文件里面修改懒加载的全局开关,默认原创 2020-10-09 11:15:57 · 967 阅读 · 0 评论 -
mybatis原理分析(八)---子查询循环依赖
文章目录前言1.概述2.代码分析3.总结前言对mybatis的相关原理不清楚的读者可以先阅读mybatis原理分析系列的前面几篇博客。再来看这一篇博客,然后跟着步骤debug调试,一边动手调试一边看博客会更好理解。1.概述在上一篇博客中介绍了结果集处理的过程。当结果集映射中出现复合对象时,会触发子查询。此时就会有个问题,子查询多次嵌套可以出现循环子查询的问题。也就是子查询循环依赖。查询A,填充属性B,需要去查询B。查询B的时候需要填充属性A,又会去查询A。例如下面的代码这里根据id查找博客,原创 2020-10-07 14:00:54 · 887 阅读 · 0 评论 -
mybatis原理分析(七)---结果集处理
文章目录1.概述2.映射设置3. 自动映射4. 关联字段5. 结果集处理源码分析5.1 测试代码5.2 源码分析6. 后续1.概述结果集处理,就是将数据库中查询的返回结果,根据某种映射关系,转换成java对象。映射是指返回的ResultSet列与Java Bean 属性之间的对应关系。通过ResultMapping进行映射描述,在用ResultMap封装成一个整体。2.映射设置一个ResultMap 中包含多个ResultMapping 表示一个具体的JAVA属性到列的映射,其主要值如下:Resu原创 2020-10-06 12:32:03 · 1878 阅读 · 2 评论 -
mybatis原理分析(六)---MetaObject
文章目录1.概述2.MetaObject实现依赖3.MetaObject获取属性的流程3.1 流程图3.2 源码分析4.MetaObject设置属性的流程1.概述在上一篇博客《mybatis原理分析(五)—参数处理》中介绍了参数处理的过程,分析了相关的源码。其中用到了MetaObject这个工具类来处理属性值,但并没有详细的介绍这个工具类有什么特点,又是如何工作的,所以这篇博客主要介绍MetaObject的特点和原理。结果集映射的时候也会使用到这个工具类,所谓映射是指结果集中的列填充至JAVA Bea原创 2020-09-28 14:36:56 · 1028 阅读 · 0 评论 -
mybatis原理分析(五)---参数处理
文章目录1.概述2.参数处理过程3.源码分析3.1 参数转换3.2 参数映射3.3 参数赋值4.总结5.后续1.概述通过之前mybatis原理分析系列的博客,已经掌握了JDBC、Executor、StatementHandler,以及一级缓存和二级缓存。对于某一块不是和了解的读者可以到mybatis原理分析的专题中去查看相对应的博客。在平时写代码的时候,我们并不会将一个sql语句中的参数给写死,而是写成如下的形式,通过传入参数的方法来给sql语句填上参数。那么mybatis是如何做到的呢?一个参数原创 2020-09-27 10:56:09 · 6217 阅读 · 2 评论 -
mybatis原理分析(四)---StatementHandler
文章目录1.概述2.StatementHandler相关介绍3. 构建StatementHandler4. 后续1.概述在之前的两篇博客《mybatis原理分析(一)—JDBC》和《mybatis原理分析(二)—深入理解Executor》中分别详细的介绍了JDBC的特点和使用以及mybtias中的重要组件Executor,如果不太了解的读者不妨去阅读一下这两篇博客,我相信会给你带来收获。这两者是通过什么联系起来的呢?在mybatis中,Executor会创建一个StatementHandler,而J原创 2020-09-25 14:55:43 · 419 阅读 · 1 评论 -
mybatis原理分析(三)---一级缓存和二级缓存
文章目录1.概述1.1 BaseExecutor1.2 CachingExecutor2.一级缓存2.1 一级缓存的命中场景2.2 触发清空一级缓存2.3 一级缓存源码分析3 二级缓存3.1 二级缓存的设计3.2 二级缓存的使用3.3 二级缓存的命中场景3.4 二级缓存源码分析3.4.1 query查询操作。3.4.2 commit提交操作。3.4.3 update操作3.5 为什么只有会话提交成功才会更新或清空二级缓存4. 后续1.概述上一篇博客《mybatis原理分析(二)—深入理解Executor原创 2020-09-20 17:00:09 · 1854 阅读 · 2 评论 -
mybatis原理分析(二)---深入理解Executor
文章目录1.概述2.Executor相关概念2.1 SimpleExecutor2.2 ReuseExecutor2.4 BatchExecutor2.4.1 批处理的效率2.4.2 批处理查询2.4.3 源码实现3. 总结4. 后续1.概述mybatis源码分析(一)中回顾了JDBC的使用和特点,本篇博客将介绍mybatis中一个重要的组件Executor。可以简单的将mybatis的执行过程分成4个阶段:接口代理、sql会话、执行器、JDBC处理器。各自的作用如下:接口代理:是为了简化对Myb原创 2020-09-17 16:59:05 · 828 阅读 · 0 评论 -
mybatis原理分析(一)---JDBC
文章目录1.概述2.jdbc相关概念3.jbdc的使用3.1 获取连接3.2 预编译sql3.3 设置参数3.4 执行3.5 获取结果集4. statement特点4.1 普通statment4.2 PreparedStatement4.3 CallableStatement1.概述使用过mybatis的都清楚底层封装了jdbc的操作,将繁琐的jdbc的操作给屏蔽了。所以分析mybatis的原理之前,先来看看jdbc是如何工作的,statement有哪些特点。2.jdbc相关概念DBC是由SUN公司原创 2020-09-16 15:38:27 · 1620 阅读 · 0 评论