天天看点

SqlSession运行原理总结

SqlSession运行原理总结

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接口)封装