首页 > 代码库 > SqlSessionFactory

SqlSessionFactory

源码:

public interface SqlSessionFactory {
SqlSession openSession();

SqlSession openSession(boolean var1);

SqlSession openSession(Connection var1);

SqlSession openSession(TransactionIsolationLevel var1);

SqlSession openSession(ExecutorType var1);

SqlSession openSession(ExecutorType var1, boolean var2);

SqlSession openSession(ExecutorType var1, TransactionIsolationLevel var2);

SqlSession openSession(ExecutorType var1, Connection var2);

Configuration getConfiguration();
}

分析:

1、无参数 openSession() 无须解释

2、openSession(boolean var1) : api 中为[ openSession(boolean autoCommit) ],该布尔值是用来控制该 sqlSession 是否自动提交,true表示自动提交,false表示不自动提交[与无参的方法功能一致,都不自动提交]

3、openSession(Connection var1) :api中为[ openSession(Connection connection) ],该Connection为 java.sql.Connection 

4、openSession(TransactionIsolationLevel var1) :api中为[ openSession(TransactionIsolationLevel level) ]

  TransactionIsolationLevel 事务的隔离级别,枚举类型,有5个值:NONE、READ_COMMITTED(读取提交内容)、READ_UNCOMMITTED(读取未提交内容)、REPEATABLE_READ(可重读)、SERIALIZABLE(可串行化)

5、openSession(ExecutorType var1) :api中为[ openSession(ExecutorType execType) ],ExecutorType执行器类型,枚举类型,有3个值:SIMPLE、REUSE(重用预处理语句)、BATCH(重用语句和批量更新)

6、其他为上面的组合,含义一致

 

调皮的 COMMIT

mybatis 默认是不自动提交的,因此可能出现一个奇怪的问题:在select数据库是没有问题, insert、delete、update也可以成功,但是数据没有发生变化,就是因为这个调皮的commit默认机制导致的

解决办法:需要在insert、delete、update后手动提交,或者在创建sqlSession时使用上面第二种方式,参数设置为True即可解决

SqlSessionFactory