![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MyBatis
MyBatis
了不起的盖茨比。
如果把一切都准备好了再前行,那我们永远迈不出第一步。
展开
-
Mybatis源码(九)mybatis常见的面试题
Spring 和MyBatis整合之后 为什么一级缓存会失效因为Spring在使用完dao之后会立即关闭sqlSession对象。如果让它生效的话,打开事务就会生效。二级缓存中要注意的点二级缓存里面的数据不能存那种一直累加到很大的。二级缓存是基于命名空间来的,缓存是拿来存储少量或者周期不长 但是要经常需要操作的数据ResultMap和ResultType的差别ResultType 一般是直接指定返回值与别名库当中的java对象的映射 比如:Map ,String ..原创 2020-09-10 20:48:47 · 392 阅读 · 0 评论 -
Mybatis源码(八)mybatis的查询的结果集的封装
前面的博客介绍执行的流程的增删改查,但是由于结果的集的封装我们没有讲清楚,所以写一篇博客。来详细的说明一下。mybatis的对查询的结果集的封装问题。前面的一篇博客介绍了mybatis会根据返回值类型,来决定执行什么样的操作。至此我们看下有那几种的返回的类型,然后写出对应的测试的方法。具体的代码如下:public class MapperMethod { public static class MethodSignature { public MethodSignature(Configuration原创 2020-09-10 20:24:10 · 855 阅读 · 0 评论 -
Mybatis源码(七)mybatis的日志体系
今天我们来谈下mybatis的日志体系。说到mybatis的日志体系我们不得不说下java的日志体系。java的日志体系真的太多了。有log4j,jul,jcl等等。因为java是一个开源的语言。所以难免有很多的日志框架。今天我们就来说下java的日志体系,然后再说下mybatis的日志体系。首先我们先来看下log4j,写出如下的代码,测试一下。我们先引入对应的依赖,具体的代码如下:<dependency> <groupId>log4j</groupId>原创 2020-09-09 13:21:09 · 236 阅读 · 0 评论 -
Mybatis源码(六)mybatis的插件编写之分页插件
前面我们已经介绍了mbatis的一些源码,这篇博客我们说下mybatis的插件的书写,首先我们要先了解一下mybatis的执行流程,具体如下图:想想我们在执行分页查询的时候,应该在什么时候,虽然上面后三个阶段都可以拦截,但是这儿的分页查询,我们在执行SQL语句之间进行拦截,所以这儿就在StatementHandler的阶段拦截。然后我们再想下,执行分页查询的步骤有哪些?具体如下:第一步 执行一条count语句第二步 重写sql select * from admin limit start,limi原创 2020-09-08 14:20:21 · 435 阅读 · 0 评论 -
Mybatis源码(五)mybatis的缓存机制
前面的博客,我们介绍mybatis的查询的流程,但是我们忘记介绍XML中匹配的参数是怎么生成的。今天会介绍一下,同时会介绍一下mybatis的一级和二级缓存。我们先看参数的生成的代码,具体的代码如下:public class ParamNameResolver { public ParamNameResolver(Configuration config, Method method) { final Class<?>[] paramTypes = method.getParamet原创 2020-09-07 14:47:25 · 244 阅读 · 0 评论 -
Mybatis源码(四)mybatis的执行流程之增删改
上篇博客我们介绍了mybatis的执行流程中查询的操作,同时介绍了两种SQL语句。但是增删改没有讲,这篇博客我们就介绍一下mybatis中的增删改的执行流程。首先我们书写以下的测试的代码,具体的代码如下:public class TestInsertOrUpdateOrDelete { public static void main(String[] args) throws IOException { String resource = "mybatis.xml"; InputStr原创 2020-09-05 17:07:20 · 120 阅读 · 0 评论 -
Mybatis源码(三)mybatis的执行流程之查询
前面的博客已经介绍了mybatis的主配置文件的解析以及mapper文件的解析的全流程,我们已经得知mapper文件解析有两种情况,一种是只有#占位符的SQL语句,这种查询语句会将#转成?。还有一种就是含有$或者动态标签的SQL语句,这个时候不做任何处理。今天针对这两种情况,我们来分析一下源码,不过只分析select查询,至于还有insert delete update 会在下篇博客中详细说明。下面来书写我们的测试代码,具体的代码如下:<?xml version="1.0" encoding="UT原创 2020-09-05 17:06:14 · 230 阅读 · 0 评论 -
Mybatis源码(二)mybatis的mapper文件解析
由于上篇博客,介绍了主配置文件的加载过程,至于mapper的文件的解析,也是讲了但是不够详细,这篇博客我决定重写梳理一遍,首先我们先看我们运行代码的以及对应的mapper文件,具体的内容如下:public class Test { public static void main(String[] args) throws Exception { String resource = "mybatis.xml"; InputStream inputStream = Resources.ge原创 2020-09-03 22:55:09 · 262 阅读 · 0 评论 -
Mybatis源码(一)mybatis的主配置文件解析
从今天开始,我们要开始mybatis源码的阅读之旅了,前置知识:JDBC,xml配置文件的解析的API。有了这些前置的知识就可以了。今天我们会讲下mybatis的主配置文件的解析过程。废话不多说,直接上代码。mybatis的配置文件如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "ht原创 2020-09-02 16:04:00 · 317 阅读 · 1 评论 -
idea下编译mybatis源码
前段时间笔者在专心研究Netty源码,Netty源码研究已经告一段落了。接下来就是开启我们的Mybaits源码的征程。首先我们要开始编译Mybatis源码。下载源码我们先去的GitHub上面找到对应的Mybatis的源码,具体的地址:Mybatis源码,具体如下图:然后通过下面的命令进行clone下来,具体的命令如下:git clone git@github.com:mybatis/mybatis-3.git下载好对应的源码后直接解压即可。导入idea在idea中找到对应的my原创 2020-08-31 11:23:32 · 548 阅读 · 0 评论