SqlSession运行原理总结

文字总结:
SqlSession的运行主要是依靠Executor执行器调用(调度)StatementHandler、parameterHanlder、ResultSetHandler,Executor首先通过创建StamentHandler执行预编译并设置参数运行,而整个过程需要如下几步才能完成:
private Statement prepareStatement(StatementHandler handler, Log statementLog) throws SQLException {
Statement stmt;
Connection connection = getConnection(statementLog);
stmt = handler.prepare(connection, transaction.getTimeout());
handler.parameterize(stmt);
return stmt;
}
1)prepare预编译SQL
由适配模式生成的RoutingStatementHandler根据上下文选择生成三种相应的XXXStatementHandler;
在生成的XXXStatementHandler内部instantiateStatement()方法执行底层JDBC的prepareStatement()方法完成预编译
2)parameterize设置参数
默认是DefaultParameterHandler(实现了parameterHandler接口)中setParameter()方法完成参数配置,其中参数从ParameterObject中取出,交给typeHandler处理
3)doUpdate/doQuery执行SQL
返回的结果通过默认的DefaultResultSetHandler(实现了ResultSetHandler接口)封装