SqlSessionFactoryBuilder
常⽤API:SqlSessionFactory build(InputStream inputStream)
通过加载mybatis的核⼼⽂件的输⼊流的形式构建⼀个SqlSessionFactory对象
//加载核⼼配置⽂件 SqlMapConfig.xml
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//构造SQLSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
其中, Resources ⼯具类,这个类在 org.apache.ibatis.io 包中。
Resources 类帮助你从类路径下、⽂件系统或⼀个 web URL 中加载资源⽂件。
SqlSessionFactory
SqlSessionFactory是⼀个接⼝,接⼝中定义了openSession的不同重载⽅法; SqlSessionFactory 是线程安全的 , ⽽且SqlSessionFactory的最佳使⽤范围是整个应⽤运⾏期间,⼀旦创建后可以重复使⽤,通常以单例模式管理SqlSessionFactory。
⽅法
|
含义
|
openSession()
|
会默认开启⼀个事务,但事务不会⾃动提交,也就意味着需要⼿动提交该事务,更新操作数据才会持久化到数据库中
|
openSession(boolean
autocommit)
|
参数为是否⾃动提交,如果设置为true, 那么不需要⼿动提交事务
|
A. 通过SqlSessionFactory 获取⼀个SqlSession;
SqlSession sqlSession = sqlSessionFactory.openSession();
B. 通过SqlSessionFactory 获取⼀个可以⾃动提交的 SqlSession;
SqlSession sqlSession = sqlSessionFactory.openSession(true);
SqlSession
SqlSession是⼀个⾯向⽤户(程序员)的接⼝, sqlSession中定义了数据库操作⽅法。每个线程都应该有它⾃⼰的SqlSession实例。SqlSession的实例不能共享使⽤,它也是线程不安全的。因此最佳的范围是请求或⽅法范围。绝对不能将SqlSession实例的引⽤放在⼀个类的静态字段或实例字段中。打开⼀个 SqlSession;使⽤完毕就要关闭它。通常把这个关闭操作放到 finally 块中以确保每次都能执⾏关闭
执⾏语句的⽅法主要有:
<T> T selectOne(String statement, Object parameter) ;
<E> List<E> selectList(String statement, Object parameter) ;
int insert(String statement, Object parameter)
int update(String statement, Object parameter)
int delete(String statement, Object parameter)
操作事务的⽅法主要有:
void commit() ;
void rollback() ;