//false: 不自动提交
SqlSession sqlSession = factory.openSession(false);
public class DefaultSqlSessionFactory implements SqlSessionFactory {
//DefaultSqlSessionFactory 中唯一成员变量
private final Configuration configuration;
@Override
public SqlSession openSession(boolean autoCommit) {
return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, autoCommit);
}
//configuration.getDefaultExecutorType() 得到的结果就是默认的 ExecutorType.SIMPLE;
public class Configuration {
//ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情。它为每个语句的执行创建一个新的预处理语句。
//ExecutorType.REUSE: 这个执行器类型会复用预处理语句。
//ExecutorType.BATCH: 这个执行器会批量执行所有更新语句,如果 SELECT 在它们中间执行还会标定它们是 必须的,来保证一个简单并易于理解的行为。
protected ExecutorType defaultExecutorType = ExecutorType.SIMPLE;
}
private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {
Transaction tx = null;
//通过configuration(封装<configration>所有信息);获取到Environment信息(
mybatis SqlSessionFactory . openSession()方法执行过程
最新推荐文章于 2024-04-19 21:13:07 发布