文章目录
JDBC
执行流程
1. 获得链接
2. 预编译SQL
对SQL进行参数,防止SQL注入
3. 执行SQL
4. 获得Result
执行器
Statement
功能
执行 static SQL. 此SQL包含了参数信息. 除此之外还有 批处理和加载行数
批处理
addBatch
在发送SQL的时候,可以将SQL积攒起来,一次性发送到数据库
PreparedStatement.addBatch(sql);
PreparedStatement.executeBatch();
加载行数
setFetchSize
一次读取多少行的数据
PreparedStatement
功能
预处理参数. 防止 SQL注入.
String name = "小白";
preparedStatement.setString(1,name);
CallableStatement
功能
存储过程调用. 用来设置存储过程的入参和获得出参.
mybatis 执行流程
SqlSession
功能
会话. CRUD功能通过此接口进行操作
此外还提供提交,关闭会话 功能
一个会话可以调用多次,但是不能跨线程调用
Executor
功能
- 完成 CRUD
- 缓存维护
- 批处理刷新
- 关闭执行器
这几种功能
StatementHandler
功能
底层还是 JDBC
对应 JDBC 中的 Statement
这里是 SimpleStatementHandler
Executor 通过 Statement 提交具体的SQL.
Statement 传输SQL到数据库
助手
通过 参数处理和结果处理,完成对参数的预编译和存储过程的调用
总结
他们都不能跨线程调用.
他们之间的关系是:
SQLSession(1) : Executor(1) : StatementHandler(n)
每执行一次SQL(sqlSession的方法(CRUD))的时候,就会生成一个全新的 StatementHandler