private SqlSession openSessionFromConnection(ExecutorType execType, Connection connection) { DefaultSqlSession var8; try { boolean autoCommit; try { autoCommit = connection.getAutoCommit(); } catch (SQLException var13) { autoCommit = true; } Environment environment = this.configuration.getEnvironment(); TransactionFactory transactionFactory = this.getTransactionFactoryFromEnvironment(environment); Transaction tx = transactionFactory.newTransaction(connection); Executor executor = this.configuration.newExecutor(tx, execType); var8 = new DefaultSqlSession(this.configuration, executor, autoCommit); } catch (Exception var14) { throw ExceptionFactory.wrapException("Error opening session. Cause: " + var14, var14); } finally { ErrorContext.instance().reset(); } return var8; }
与上一个方法唯一的不同点在于,它传递了Connection 类的对象,这个对象用来获取autoCommit属性的值,其他跟上一个方法一模一样,我们不再赘述。
二、综上所述
上面就是获取SqlSession的所有步骤,是不是很简单?这就是源码,理解了原理,以后谁问也不怕。
下一帖,我们就要通过SqlSession去执行getMapper方法了,很期待。