MyBatis 作用域(Scope)和生命周期

Posted 王景迁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis 作用域(Scope)和生命周期相关的知识,希望对你有一定的参考价值。

  SqlSessionFactoryBuilder

  一旦创建了SqlSessionFactory,就不再需要它了。因此SqlSessionFactoryBuilder的最佳作用域是方法作用域(也就是局部方法变量)。

 

  SqlSessionFactory

  SqlSessionFactory一旦被创建就会在应用的运行期间一直存在,不能被清除或重建。因此SqlSessionFactory的最佳作用域是应用作用域。最简单的就是使用单例模式。

 

  SqlSession

  每个线程都有自己的SqlSession实例。SqlSession实例不是线程安全的,不能被共享,所以它的最佳作用域是方法作用域(也就是局部方法变量)。把关闭操作放到finally块中以确保每次都能执行关闭。示例如下:

1 SqlSession session = sqlSessionFactory.openSession();
2 try {
3   // do work
4 } finally {
5   session.close();
6 }

 

  映射器实例(Mapper Instances)

  映射器用于创建绑定映射语句的接口。映射器接口的实例是从SqlSession中获得的。它的最佳作用域是方法作用域(也就是局部方法变量)。示例如下:

1 SqlSession session = sqlSessionFactory.openSession();
2 try {
3   BlogMapper mapper = session.getMapper(BlogMapper.class);
4   // do work
5 } finally {
6   session.close();
7 }

 

  参考资料

  MyBatis入门(官网)

以上是关于MyBatis 作用域(Scope)和生命周期的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis生命周期和作用域理解

SqlSessionFactoryBuilderSqlSessionFactorySqlSession作用域(Scope)和生命周期

SqlSessionFactoryBuilderSqlSessionFactorySqlSession作用域(Scope)和生命周期

MyBatis 作用域和生命周期

MyBatis:SqlSession及其工厂类的作用域和生命周期

mybatis(万能Map生命周期和作用域)