SqlSessionUtil
public class SqlSessionUtil {
private static SqlSessionFactory sqlSessionFactory = null;
// 使用ThreadLocal 来管理我们的 SqlSession
private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
static {
// 指定mybaits的全局配置文件的路径
String resource = "mybatis-config.xml";
// 输入流读取配置文件
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 通过FactoryBuilder 得到 SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 释放inputStream
try {
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @return
*/
public static SqlSession getSqlSession() {
// 要先去threadLocal 看看是否有和当前线程绑定的那个sqlsession如果有 直接使用 没有再创建 op~ session
SqlSession session = threadLocal.get();
if (session == null) {
// 通过sqlSessionFactory得到SqlSession,true开启自动提交
session = sqlSessionFactory.openSession(true);
// 得到了这个session,就将其放在threadLocal中
threadLocal.set(session);
}
return session;
}
/**
*
*/
public static void closeSqlSession() {
// 从当前线程中获取 SqlSession对象
SqlSession session = threadLocal.get();
// 如果对象 不为空
if (session != null) {
// 从threadLocal 中移除
threadLocal.remove();
session.close();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
编辑 (opens new window)