创建sqlsession经过了以下几个主要步骤:
1) 从配置中获取Environment;
2) 从Environment中取得DataSource;
3) 从Environment中取得TransactionFactory;
4) 从DataSource里获取数据库连接对象Connection;
5) 在取得的数据库连接上创建事务对象Transaction;
6) 创建Executor对象(该对象非常重要,事实上sqlsession的所有操作都是通过它完成的);
7) 创建sqlsession对象。
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
SqlSession接口
类:
DefaultSqlSessionFactory--> private final org.apache.ibatis.session.Configuration
configuration;
--> public DefaultSqlSessionFactory
(org.apache.ibatis.session.Configuration configuration)
--> public org.apache.ibatis.session.SqlSession
openSession()-->openSession(boolean b);
SqlSessionManager-->startManagedSession
-->public org.apache.ibatis.session.SqlSession
openSession(boolean autoCommit) -->openSession()
解析完配置文件之后,配置文件中的所有信息就存储到了Configuration对象中了,在创建SqlSessionFactory对象时将Configuration做为SqlSessionFactory对象的一个属性,通过调用SqlSessionFactory的openSession(...),openSession()有很多重载方法,创建SqlSession对象只能通过openSession()和这些重载方法
@Override
public SqlSession openSession() {
return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, false);
}
底层代码:
//IntelliJ API Decompiler stub source generated from a class file
从类文件生成的intellij存根源文件
//Implementation of methods is not available
无法实现方法
package org.apache.ibatis.session;
public interface SqlSessionFactory {
org.apache.ibatis.session.SqlSession openSession();
org.apache.ibatis.session.SqlSession openSession(boolean b);
org.apache.ibatis.session.SqlSession openSession(java.sql.Connection connection);
org.apache.ibatis.session.SqlSession openSession(org.apache.ibatis.session.TransactionIsolationLevel transactionIsolationLevel);
org.apache.ibatis.session.SqlSession openSession(org.apache.ibatis.session.ExecutorType executorType);
org.apache.ibatis.session.SqlSession openSession(org.apache.ibatis.session.ExecutorType executorType, boolean b);
org.apache.ibatis.session.SqlSession openSession(org.apache.ibatis.session.ExecutorType executorType, org.apache.ibatis.session.TransactionIsolationLevel transactionIsolationLevel);
org.apache.ibatis.session.SqlSession openSession(org.apache.ibatis.session.ExecutorType executorType, java.sql.Connection connection);
org.apache.ibatis.session.Configuration getConfiguration();
}
openSession
最新推荐文章于 2023-04-11 22:12:11 发布