mybatis调用链路

阅读数:120 评论数:0

跳转到新版页面

分类

python/Java

正文

一、概述

二、SqlSessionFactory

SqlSessionFactory由Mybatis配置文件和映射文件,使用SqlSessionFactoryBuilder进行创建,它是用于获取SqlSession对象的工厂类。

三、SqlSession

SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。

SqlSession是mybatis的核心操作类,对数据库的crud都封装在这个接口,其默认的实现类是DefaultSqlSession。

四、Executor

Executor可以简单理解为JDBC中statement的封装版。

1、BaseExecutor

BaseExecutor是一个抽象类,这种通过抽象类实现接口的方式是适配器设计模式的体现,主要用于方便次一级子类对接口中方法的实现。

(1)SimpleExecutor

一个Statement接口对象只执行一次,执行完毕就会把Statement接口对象销毁。是MyBatis中默认使用的执行器,每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象(可以是Statement或PrepareStatement对象)。

(2)ReuseExecutor

重用指的是重复使用Statement,它会在内部利用一个Map把初始化的Statement都缓存起来,每次在执行一条SQL语句时,它都会去判断之前是否存在基于该SQL缓存的Statement对象,存在而且之前缓存的Statement对象对应的Connection还没有关闭的时候就继续用之前的Statement对象,否则将初始化一个新的Statement对象,并将其缓存起来。因为每一个新的SqlSession都有一个新的Executor对象,所以我们缓存在ReuseExecutor上的Statement的作用域是同一个SqlSession。

(3)BatchExecutor

用于将多个Statement对应的SQL语句,交给一个Statement对象一次输送到数据库,进行批处理操作

五、Transaction

保证一组相关的数据库操作的一致性,要么同时成功,要么同时失败。

六、DataSource

利用池化技术,维护了一定量的connection.减少了创建和销毁connection带来的性能损耗。同时可以提供一些辅助的功能,如sql预编译、sql监控等。

七、Connection

java程序与数据库建立的网络连接,创建和销毁是比较耗费资源的。




相关推荐

一、概述 一个项目使用多个数据库(无论是主从复制--读写分离还是分布式数据库结构)的重要性变得越来越明显,整合的多数据源有两种方式:分包和aop。 1、SqlSessionTemplate SqlSe

背景: 之前用spring boot+mybatis+oracle,现在要改成spring boot_mybatis+postgresql。 为了想让一套代码即可

当我们进行web开发的时候总是看到配置的log4j日志在控制台无法显示mybatis的主要是指sql、参数、结果,出现这种问题有两种情况: 情部1:</strong

MyBatis Plus官方文档<

一、项目依赖 <dependencies> <!-- --> <dependency> <groupId>org.springframework

一、初始化项目 1、pom.xml &lt;?xml version="1.0" encoding

方法一 给XXMapper.java加上Mapper注解,如: import org.apache.i

一、概述 1、读写分离 数据库主节点压力比较大,需要增加从节点提供读操作,以减少压力。 2、多数据源 一个复杂发项目,因为没有拆分服务,需要连接多个业务的数据源。 这些场景都需要使用springboo

(1)Spring MVC是一个基于DispatcherServlet的MVC框架,DispatcherServlet是继承自HttpServlet的。Spring的IOC和AOP主要就用了java的

如果一个类交张spring管理,比如 &lt;bean id="foo1" class="demo.scope.foo" /&gt; 不指明scope就是单例。</p