前面介绍了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,就会发现,全部同名的方法,最终都是会调用一个参数最多的方法来实现,这就是所谓的门面模式,这样设计的初衷就是为了让我们更加方便的调用这个类