一.Mybatis的核心对象及其作用
前面我们讲了Configuation对象的作用和MappedStatement对象的作用。我们知道MappedStatement是记录我们在xxxMapper.xml种所写的一个个的标签,例如<insert>等。其实我们所写的sql语句也是被一个对象存储了下来。 这个对象就是Boundsql对象。
接下来我们来大概介绍一下mybatis中的操作类对象
我们知道mybatis是通过sqlSession对象进行操作的,其实底层就是通过SqlSession对象调用mybatis的操作类对象以及配置信息对象进行操作的。
1.Excutor
Excutor是Mybatis中处理功能的核心,其实在底层调用中,SqlSession也是首先通过了Excutor接口对象的。
通过分析接口可知。
Excutor接口注意涉及了:1. 增删改update 查询 query 2.事务方法的操作 3.缓存相关的操作
Excutor接口有如下的实现类
我们重点了解其3个实现类即可,分别是SimpleExecutor,ReuseExecutor,BatchExecutor
其中BaseExecutor是采用了适配器的设计模式
(1).SimpleExecutor:
SimpleExecutor是常用Excutor Mybatis推荐 默认的,通过下图我们可以看到。
(2).ReuseExecutor:
目的是复用statement(sql),但是这种用的也很少,因为在实际开发中,我们使用相同的statement情况特别少见(sql语句相同,参数也要相同的情况很少)
(3).BatchExecutor:
目的是处理JDBC中的批操作。
2.statementHandler
StatementHandler是Mybatis封装了JDBC Statement,真正Mybatis进行数据库访问操作的核心(增删改查) 其通过在底层是由Excutor进行调用的。
statementHandler也是一个接口,也有其实现类,通过实现类我们可以更加了解到
StatementHandler是mybatis封装了JDBC中的Statement
其实现类SimpleStatementHandler,PreparedStatementHandler,CallableStatementHandler不就是对于JDBC中的Statement,preparedStatement,callableStatement。
3. ParameterHandler
目的:Mybatis参数 ---》 JDBC 相关的参数
@Param ---> #{} --- > ?
4. ResultSetHandler
目的:对JDBC中查询结果集 ResultSet 进行封装
5.TypeHandler
Java程序操作 数据库
Java类型 数据库类型
String varchar
int number
int int
通过对Mybatis数据存储对象 和 操作类对象 的大概分析,我们可以得到如下这张图