注意:此系列源代码分析基于Mybatis 3.5.6,源代码的源代码,源代码仓库地址:Funcy/Mybatis。
SQL声明的运作由执行器()完成,中国有三种类型:
重复使用执行器的缓存,可以将相同的重复使用重复使用下一个执行中的执行器到局部区域,并触发程序的修改或在批处理中执行下一个查询。这实际上是上述三个执行器的装饰,以处理与缓存相关的操作。实际工作是以上三个执行器之一。
持续结构如下:
实施的基本操作,例如:
当我们关注实施该类别现实的实施时。
它将为每个执行生成,并且在执行后将关闭。
获得的方法是:
该方法首先获得数据库连接,然后获得,然后处理参数设置。
关于获取数据库连接,分析配置文件的分析时,数据源的配置最终将转换为或对象。数据库连接来自数据源。
至于一代,实例化操作方法是这些是常规的JDBC操作,您不会仔细看一下。
处理SQL的执行方法是:
执行过程如下:
该操作是常规的JDBC操作。
可以缓存,下次可以执行相同的重复使用。
我们仍然分析该方法:
与之相比,该方法未关闭。让我们看一下操作:
可以看出,在获得时,将从缓存获得。缓存中不会有新的,然后将新构建的添加到缓存中。从这里可以看到重复使用。
让我们看一下缓冲结构:
可以看出,缓存之一是句子。
修改操作将在本地记录,等待程序触发或下一个查询以分批执行修改操作,也就是说:
从上述角度来看,似乎有一个大坑,列表列出如下:
让我们看一下更新操作并输入该方法:
一些成员变量将记录最后的执行。如果执行与上次执行相同,则使用上次使用,否则将创建新的连接和采集。
获得该方法后,该方法将被调用:
此方法未执行,但保留了呼叫方法。
如何使用?简单地指出:
该方法不执行SQL语句。让我们看一下方法:
该方法将首先调用,然后处理查询操作。整个过程基本上是相同的,也就是说,“获取数据库连接添加处理查询关闭”和其他步骤。我们关注该方法的过程。
最终调用是方法,代码如下:
该方法的关键代码是,其中更新操作分批执行。
从上面的分析可以看出,该方法不会执行SQL语句,而只是将SQL语句转换为caches。执行该方法时,它将首先执行缓存,然后执行查询操作。当然,您可以手动调用该方法执行缓存。
与以上三种执行器不同,它是一个装饰类,可以从缓存中获取数据。实际工作是以上三个执行者之一:
从代码来看,它是一个子类,其中一个是成员变量,其类型被输入。换句话说,当创建时,将引入以上三个执行器之一,并将保存到成员变量中。
该方法如下:
从代码的角度来看,在处理查询时,将从缓存中获得。当缓存中没有存在时,执行特定执行器的方法将被执行。
本文中的原始链接:https://my.oschina.net/funcy/blog/4952948,仅限于作者的个人级别,文章中有不可避免的事情,欢迎使用CROCKE!请与作者联系以获取业务重印。请指示非商业重印的来源。
原始:https://juejin.cn/post/7102811474061590564