1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.submitted.flush_statement_npe;
17
18 import java.io.Reader;
19
20 import org.apache.ibatis.BaseDataTest;
21 import org.apache.ibatis.io.Resources;
22 import org.apache.ibatis.session.ExecutorType;
23 import org.apache.ibatis.session.SqlSession;
24 import org.apache.ibatis.session.SqlSessionFactory;
25 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
26 import org.junit.jupiter.api.BeforeAll;
27 import org.junit.jupiter.api.Test;
28
29 class FlushStatementNpeTest {
30
31 private static SqlSessionFactory sqlSessionFactory;
32
33 @BeforeAll
34 static void initDatabase() throws Exception {
35 try (Reader reader = Resources
36 .getResourceAsReader("org/apache/ibatis/submitted/flush_statement_npe/ibatisConfig.xml")) {
37 sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
38 }
39
40 BaseDataTest.runScript(sqlSessionFactory.getConfiguration().getEnvironment().getDataSource(),
41 "org/apache/ibatis/submitted/flush_statement_npe/CreateDB.sql");
42 }
43
44 @Test
45 void testSameUpdateAfterCommitSimple() {
46 try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.SIMPLE)) {
47 PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
48 Person person = personMapper.selectById(1);
49 person.setFirstName("Simone");
50
51
52 personMapper.update(person);
53 sqlSession.commit();
54
55
56 personMapper.update(person);
57 sqlSession.commit();
58 }
59 }
60
61 @Test
62 void testSameUpdateAfterCommitReuse() {
63 try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.REUSE)) {
64 PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
65 Person person = personMapper.selectById(1);
66 person.setFirstName("Simone");
67
68
69 personMapper.update(person);
70 sqlSession.commit();
71
72
73 personMapper.update(person);
74 sqlSession.commit();
75 }
76 }
77
78 @Test
79 void testSameUpdateAfterCommitBatch() {
80 try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) {
81 PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
82 Person person = personMapper.selectById(1);
83 person.setFirstName("Simone");
84
85
86 personMapper.update(person);
87 sqlSession.commit();
88
89
90 personMapper.update(person);
91 sqlSession.commit();
92 }
93 }
94 }