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.getResourceAsReader("org/apache/ibatis/submitted/flush_statement_npe/ibatisConfig.xml")) {
36 sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
37 }
38
39 BaseDataTest.runScript(sqlSessionFactory.getConfiguration().getEnvironment().getDataSource(),
40 "org/apache/ibatis/submitted/flush_statement_npe/CreateDB.sql");
41 }
42
43 @Test
44 void testSameUpdateAfterCommitSimple() {
45 try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.SIMPLE)) {
46 PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
47 Person person = personMapper.selectById(1);
48 person.setFirstName("Simone");
49
50
51 personMapper.update(person);
52 sqlSession.commit();
53
54
55 personMapper.update(person);
56 sqlSession.commit();
57 }
58 }
59 @Test
60 void testSameUpdateAfterCommitReuse() {
61 try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.REUSE)) {
62 PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
63 Person person = personMapper.selectById(1);
64 person.setFirstName("Simone");
65
66
67 personMapper.update(person);
68 sqlSession.commit();
69
70
71 personMapper.update(person);
72 sqlSession.commit();
73 }
74 }
75 @Test
76 void testSameUpdateAfterCommitBatch() {
77 try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) {
78 PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
79 Person person = personMapper.selectById(1);
80 person.setFirstName("Simone");
81
82
83 personMapper.update(person);
84 sqlSession.commit();
85
86
87 personMapper.update(person);
88 sqlSession.commit();
89 }
90 }
91 }