Skip to content

Commit e720f1f

Browse files
committed
NameRecord can be a record
1 parent 19ac640 commit e720f1f

File tree

5 files changed

+26
-55
lines changed

5 files changed

+26
-55
lines changed

src/test/java/issues/gh324/NameRecord.java

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,7 @@
1515
*/
1616
package issues.gh324;
1717

18-
import org.jspecify.annotations.Nullable;
19-
2018
import java.io.Serializable;
2119

22-
public class NameRecord implements Serializable {
23-
private @Nullable Integer id;
24-
private @Nullable String name;
25-
26-
public @Nullable Integer getId() {
27-
return id;
28-
}
29-
30-
public void setId(Integer id) {
31-
this.id = id;
32-
}
33-
34-
public @Nullable String getName() {
35-
return name;
36-
}
37-
38-
public void setName(String name) {
39-
this.name = name;
40-
}
20+
public record NameRecord (Integer id, String name) implements Serializable {
4121
}

src/test/java/issues/gh324/NameService.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,15 @@ public NameService() {
6060
public void insertRecord() {
6161
try (SqlSession session = sqlSessionFactory.openSession(true)) {
6262
NameTableMapper mapper = session.getMapper(NameTableMapper.class);
63-
NameRecord row = new NameRecord();
64-
row.setId(1);
65-
row.setName("Fred");
63+
NameRecord row = new NameRecord(1, "Fred");
6664
mapper.insert(row);
6765
}
6866
}
6967

7068
public void updateRecordWithAutoCommit() {
7169
try (SqlSession session = sqlSessionFactory.openSession(true)) {
7270
NameTableMapper mapper = session.getMapper(NameTableMapper.class);
73-
NameRecord row = new NameRecord();
74-
row.setId(1);
75-
row.setName("Barney");
71+
NameRecord row = new NameRecord(1, "Barney");
7672
mapper.updateByPrimaryKey(row);
7773
}
7874
}
@@ -81,19 +77,15 @@ public void updateRecordWithoutAutoCommitAndNoExplicitCommit() {
8177
// this should rollback
8278
try (SqlSession session = sqlSessionFactory.openSession()) {
8379
NameTableMapper mapper = session.getMapper(NameTableMapper.class);
84-
NameRecord row = new NameRecord();
85-
row.setId(1);
86-
row.setName("Barney");
80+
NameRecord row = new NameRecord(1, "Barney");
8781
mapper.updateByPrimaryKey(row);
8882
}
8983
}
9084

9185
public void updateRecordWithoutAutoCommitAndExplicitCommit() {
9286
try (SqlSession session = sqlSessionFactory.openSession()) {
9387
NameTableMapper mapper = session.getMapper(NameTableMapper.class);
94-
NameRecord row = new NameRecord();
95-
row.setId(1);
96-
row.setName("Barney");
88+
NameRecord row = new NameRecord(1, "Barney");
9789
mapper.updateByPrimaryKey(row);
9890
session.commit();
9991
}

src/test/java/issues/gh324/NameTableMapper.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,31 @@
2121
import java.util.List;
2222
import java.util.Optional;
2323

24-
import org.apache.ibatis.annotations.*;
24+
import org.apache.ibatis.annotations.Arg;
25+
import org.apache.ibatis.annotations.CacheNamespace;
26+
import org.apache.ibatis.annotations.SelectProvider;
2527
import org.mybatis.dynamic.sql.BasicColumn;
2628
import org.mybatis.dynamic.sql.delete.DeleteDSLCompleter;
2729
import org.mybatis.dynamic.sql.select.SelectDSLCompleter;
2830
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
2931
import org.mybatis.dynamic.sql.update.UpdateDSLCompleter;
3032
import org.mybatis.dynamic.sql.util.SqlProviderAdapter;
31-
import org.mybatis.dynamic.sql.util.mybatis3.*;
33+
import org.mybatis.dynamic.sql.util.mybatis3.CommonCountMapper;
34+
import org.mybatis.dynamic.sql.util.mybatis3.CommonDeleteMapper;
35+
import org.mybatis.dynamic.sql.util.mybatis3.CommonInsertMapper;
36+
import org.mybatis.dynamic.sql.util.mybatis3.CommonUpdateMapper;
37+
import org.mybatis.dynamic.sql.util.mybatis3.MyBatis3Utils;
3238

3339
@CacheNamespace(implementation = ObservableCache.class)
3440
public interface NameTableMapper extends CommonCountMapper, CommonDeleteMapper, CommonInsertMapper<NameRecord>, CommonUpdateMapper {
3541
@SelectProvider(type=SqlProviderAdapter.class, method="select")
36-
@Results(id="NameTableResult", value={
37-
@Result(column="id", property="id", id=true),
38-
@Result(column="name", property="name")
39-
})
42+
@Arg(column = "id", javaType = Integer.class, id = true)
43+
@Arg(column = "name", javaType = String.class)
4044
List<NameRecord> selectMany(SelectStatementProvider selectStatement);
4145

4246
@SelectProvider(type=SqlProviderAdapter.class, method="select")
43-
@ResultMap("NameTableResult")
47+
@Arg(column = "id", javaType = Integer.class, id = true)
48+
@Arg(column = "name", javaType = String.class)
4449
Optional<NameRecord> selectOne(SelectStatementProvider selectStatement);
4550

4651
BasicColumn[] selectList = BasicColumn.columnList(id, name);
@@ -68,8 +73,8 @@ default int update(UpdateDSLCompleter completer) {
6873

6974
default int updateByPrimaryKey(NameRecord row) {
7075
return update(c ->
71-
c.set(name).equalTo(row::getName)
72-
.where(id, isEqualTo(row::getId))
76+
c.set(name).equalTo(row::name)
77+
.where(id, isEqualTo(row::id))
7378
);
7479
}
7580

src/test/java/issues/gh324/TestUtils.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919

2020
public class TestUtils {
2121
public static void recordIsFred(NameRecord row) {
22-
assertThat(row.getId()).isEqualTo(1);
23-
assertThat(row.getName()).isEqualTo("Fred");
22+
assertThat(row.id()).isEqualTo(1);
23+
assertThat(row.name()).isEqualTo("Fred");
2424
}
2525

2626
public static void recordIsBarney(NameRecord row) {
27-
assertThat(row.getId()).isEqualTo(1);
28-
assertThat(row.getName()).isEqualTo("Barney");
27+
assertThat(row.id()).isEqualTo(1);
28+
assertThat(row.name()).isEqualTo("Barney");
2929
}
3030
}

src/test/java/issues/gh324/spring/SpringNameService.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,25 +37,19 @@ public class SpringNameService {
3737

3838
@Transactional(propagation = Propagation.REQUIRES_NEW)
3939
public void insertRecord() {
40-
NameRecord row = new NameRecord();
41-
row.setId(1);
42-
row.setName("Fred");
40+
NameRecord row = new NameRecord(1, "Fred");
4341
mapper.insert(row);
4442
}
4543

4644
@Transactional(propagation = Propagation.REQUIRES_NEW)
4745
public void updateRecordAndCommit() {
48-
NameRecord row = new NameRecord();
49-
row.setId(1);
50-
row.setName("Barney");
46+
NameRecord row = new NameRecord(1, "Barney");
5147
mapper.updateByPrimaryKey(row);
5248
}
5349

5450
public void updateRecordAndRollback() {
5551
TransactionStatus txStatus = transactionManager.getTransaction(new DefaultTransactionDefinition());
56-
NameRecord row = new NameRecord();
57-
row.setId(1);
58-
row.setName("Barney");
52+
NameRecord row = new NameRecord(1, "Barney");
5953
mapper.updateByPrimaryKey(row);
6054
transactionManager.rollback(txStatus);
6155
}

0 commit comments

Comments
 (0)