在MyBatis中使用SqlSession

时间:2015-01-23 09:17:15

标签: java vaadin mybatis

我是MyBatis的初学者,我正在浏览他们文档的下方链接:
MyBatis Getting Started

它的建议是:

  

每个线程都应该有自己的SqlSession实例。 SqlSession的实例不是共享的,也不是线程安全的。

从我的理解是,我们应该以这种方式使用它:

SqlSession session = // getting one instance of SqlSession as suggested in above link  
List<Integer> result = session.selectList("getUsersId");
session.close();  

所有类似的地方,我需要每次都创建新的SqlSession并关闭它们。有没有更好的方法来使用它?从更好的方式来说,我的意思是更好的编写代码的方式,模式应该为我创建SqlSession并自动关闭它 (我正在使用Vaadin和MyBatis。)

3 个答案:

答案 0 :(得分:0)

SqlSession的生存期范围是方法或Http请求。因此,如果方法返回或请求完成,它将自动关闭。

答案 1 :(得分:0)

SqlSession是可自动关闭的

使用try-with-resource时,Autocloseable类将调用默认的close方法

正确的模式是

try (SqlSession session = // getting one instance of SqlSession as suggested in above link) {
    List<Integer> result = session.selectList("getUsersId");
}

答案 2 :(得分:-1)

使用ThreadLocal。使用这种方法,每个线程都有自己的SqlSession。请注意,线程应该自行清理,因此关闭打开的sql会话应该是它的一部分。

更多相关内容: