- 将Mybatis核心配置文件加载至内存中
String resource="mybatis-config.xml";
//将mybatis核心配置文件加载到内存中
InputStream resourceAsStream = Resources.getResourceAsStream(resource);
//实例化一个SqlSessionFactoryBuilder构造器并调用build方法
new SqlSessionFactoryBuilder().build(resourceAsStream);
//-------------------------------------------------------------------------
public SqlSessionFactory build(Reader reader, String environment, Properties properties) {
SqlSessionFactory var5;
try {
//XMLConfigBuilder解析文件流
XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties);
var5 = this.build(parser.parse());
} catch (Exception var14) {
throw ExceptionFactory.wrapException("Error building SqlSession.", var14);
} finally {
ErrorContext.instance().reset();
try {
reader.close();
} catch (IOException var13) {
}
}
return var5;
}
//------------------------------------------------------------------
//把配置信息放入Configuration对象中,并且创建DefaultSqlSessionFactory对象
public SqlSessionFactory build(Configuration config) {
return new DefaultSqlSessionFactory(config);
}
//------------------------------------------------------------------
//调用openSession方法调用openSessionFromDataSource方法
public SqlSession openSession() {
return this.openSessionFromDataSource(this.configuration.getDefaultExecutorType(), (TransactionIsolationLevel)null, false);
}
//------------------------------------------------------------------
private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {
Transaction tx = null;
DefaultSqlSession var8;
try {
Environment environment = this.configuration.getEnvironment();
//由TransactionFactory 创建一个Transaction 事务对象
TransactionFactory transactionFactory = this.getTransactionFactoryFromEnvironment(environment);
tx = transactionFactory.newTransaction(environment.getDataSource(), level, autoCommit);
//创建执行器Executor
Executor executor = this.configuration.newExecutor(tx, execType);
var8 = new DefaultSqlSession(this.configuration, executor, autoCommit);
} catch (Exception var12) {
this.closeTransaction(tx);
throw ExceptionFactory.wrapException("Error opening session. Cause: " + var12, var12);
} finally {
ErrorContext.instance().reset();
}
return var8;
}
//------------------------------------------------------
//获取mapper对象进行CRUD操作
public <T> T getMapper(Class<T> type) {
return this.configuration.getMapper(type, this);
}
//设置自动提交为false
private final boolean autoCommit;
//---------------------------------------
//关闭流
public void close() {
try {
this.executor.close(this.isCommitOrRollbackRequired(false));
this.closeCursors();
this.dirty = false;
} finally {
ErrorContext.instance().reset();
}
}
版权声明:本文为weixin_45608165原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。