MyBatis(二)开始学习源码的切入点

本文从MyBatis的SqlSession和Executor入手,探讨MyBatis的核心操作。SqlSession作为数据库操作的入口,其内部通过Executor执行器进行实际操作。Executor包含CachingExecutor(二级缓存执行器)、BaseExecutor(一级缓存执行器)及其三个子类。SqlSession的selectList方法执行流程涉及SqlSession、Executor、StatementHandler等多个组件的交互。

前面介绍了JDBC的基本概念、常见接口和类、基本使用流程、三种statement,就算是对JDBC做了一个了解,接下来我们要从MyBatis中的SqlSession和Executor、StatementHandler作为一个切入点,来进行对MyBatis的解析

首先还是来了解一下基本概念

一、SqlSession(sql会话)

SqlSession是MyBatis中进行操作的关键对象,在这个对象中包含了增删改查、开启事物等基本操作,是操作数据库的总入口。SqlSession底层封装了JDBC,但是它是怎么封装JDBC的不是这篇文章的重点,我们的重点先放在SqlSession的基本结构上
在SqlSession的实现类DefaultSqlSession内部,有一个对象 private final Executor executor,SqlSession的具体操作都是交给executor来完成的,所以可以看出,一个SqlSession
SqlSession对象不是线程安全的,不能够跨线程调用,在使用完之后就应该及时关闭调

观察下面SqlSession的接口,我们可以发现,它有很多方法都是同名的,如果我们去看实现类DefaultSqlSession,就会发现,全部同名的方法,最终都是会调用一个参数最多的方法来实现,这就是所谓的门面模式,这样设计的初衷就是为了让我们更加方便的调用这个类


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员徐小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值