@@ -319,6 +319,7 @@ public class JdbcCursorItemReaderBuilder<T> {
|
||||
* @param mappedClass the class for the row mapper
|
||||
* @return this instance for method chaining
|
||||
* @see DataClassRowMapper
|
||||
* @since 5.2
|
||||
*/
|
||||
public JdbcCursorItemReaderBuilder<T> dataRowMapper(Class<T> mappedClass) {
|
||||
this.rowMapper = new DataClassRowMapper<>(mappedClass);
|
||||
|
||||
@@ -193,6 +193,7 @@ public class JdbcPagingItemReaderBuilder<T> {
|
||||
* @param mappedClass the class for the row mapper
|
||||
* @return this instance for method chaining
|
||||
* @see DataClassRowMapper
|
||||
* @since 5.2
|
||||
*/
|
||||
public JdbcPagingItemReaderBuilder<T> dataRowMapper(Class<T> mappedClass) {
|
||||
this.rowMapper = new DataClassRowMapper<>(mappedClass);
|
||||
|
||||
@@ -329,33 +329,36 @@ class JdbcCursorItemReaderBuilderTests {
|
||||
assertEquals("A rowmapper is required", exception.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDataRowMapper() throws Exception {
|
||||
JdbcCursorItemReader<Bar> reader = new JdbcCursorItemReaderBuilder<Bar>().name("barReader")
|
||||
.dataSource(this.dataSource)
|
||||
.sql("SELECT * FROM BAR ORDER BY FIRST")
|
||||
.dataRowMapper(Bar.class)
|
||||
.build();
|
||||
|
||||
reader.afterPropertiesSet();
|
||||
|
||||
reader.open(new ExecutionContext());
|
||||
|
||||
validateBar(reader.read(), 0, 1, "2", "3");
|
||||
validateBar(reader.read(), 1, 4, "5", "6");
|
||||
validateBar(reader.read(), 2, 7, "8", "9");
|
||||
|
||||
assertNull(reader.read());
|
||||
}
|
||||
|
||||
private void validateFoo(Foo item, int first, String second, String third) {
|
||||
assertEquals(first, item.getFirst());
|
||||
assertEquals(second, item.getSecond());
|
||||
assertEquals(third, item.getThird());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDataRowMapper() throws Exception {
|
||||
JdbcCursorItemReader<Bar> reader = new JdbcCursorItemReaderBuilder<Bar>()
|
||||
.name("barReader")
|
||||
.dataSource(this.dataSource)
|
||||
.currentItemCount(1)
|
||||
.maxItemCount(2)
|
||||
.sql("SELECT ID, FIRST, SECOND, THIRD FROM BAR ORDER BY ID DESC")
|
||||
.dataRowMapper(Bar.class)
|
||||
.build();
|
||||
|
||||
reader.afterPropertiesSet();
|
||||
|
||||
reader.open(new ExecutionContext());
|
||||
Bar item1 = reader.read();
|
||||
assertNull(reader.read());
|
||||
|
||||
assertEquals(3, item1.id());
|
||||
assertEquals(10, item1.first());
|
||||
assertEquals("11", item1.second());
|
||||
assertEquals("12", item1.third());
|
||||
private void validateBar(Bar item, int id, int first, String second, String third) {
|
||||
assertEquals(id, item.id());
|
||||
assertEquals(first, item.first());
|
||||
assertEquals(second, item.second());
|
||||
assertEquals(third, item.third());
|
||||
}
|
||||
|
||||
public static class Foo {
|
||||
@@ -392,7 +395,8 @@ class JdbcCursorItemReaderBuilderTests {
|
||||
|
||||
}
|
||||
|
||||
public record Bar(int id, int first, String second, String third) {}
|
||||
public record Bar(int id, int first, String second, String third) {
|
||||
}
|
||||
|
||||
@Configuration
|
||||
public static class TestDataSourceConfiguration {
|
||||
@@ -403,7 +407,7 @@ class JdbcCursorItemReaderBuilderTests {
|
||||
FIRST BIGINT ,
|
||||
SECOND VARCHAR(5) NOT NULL,
|
||||
THIRD VARCHAR(5) NOT NULL);
|
||||
|
||||
|
||||
CREATE TABLE BAR (
|
||||
ID BIGINT IDENTITY NOT NULL PRIMARY KEY ,
|
||||
FIRST BIGINT ,
|
||||
@@ -414,12 +418,10 @@ class JdbcCursorItemReaderBuilderTests {
|
||||
INSERT INTO FOO (FIRST, SECOND, THIRD) VALUES (1, '2', '3');
|
||||
INSERT INTO FOO (FIRST, SECOND, THIRD) VALUES (4, '5', '6');
|
||||
INSERT INTO FOO (FIRST, SECOND, THIRD) VALUES (7, '8', '9');
|
||||
|
||||
|
||||
INSERT INTO BAR (FIRST, SECOND, THIRD) VALUES (1, '2', '3');
|
||||
INSERT INTO BAR (FIRST, SECOND, THIRD) VALUES (4, '5', '6');
|
||||
INSERT INTO BAR (FIRST, SECOND, THIRD) VALUES (7, '8', '9');
|
||||
INSERT INTO BAR (FIRST, SECOND, THIRD) VALUES (10, '11', '12');
|
||||
INSERT INTO BAR (FIRST, SECOND, THIRD) VALUES (13, '14', '15');""";
|
||||
INSERT INTO BAR (FIRST, SECOND, THIRD) VALUES (7, '8', '9');""";
|
||||
|
||||
@Bean
|
||||
public DataSource dataSource() {
|
||||
|
||||
@@ -268,8 +268,7 @@ class JdbcPagingItemReaderBuilderTests {
|
||||
Map<String, Order> sortKeys = new HashMap<>(1);
|
||||
sortKeys.put("ID", Order.DESCENDING);
|
||||
|
||||
JdbcPagingItemReader<Bar> reader = new JdbcPagingItemReaderBuilder<Bar>()
|
||||
.name("barReader")
|
||||
JdbcPagingItemReader<Bar> reader = new JdbcPagingItemReaderBuilder<Bar>().name("barReader")
|
||||
.dataSource(this.dataSource)
|
||||
.currentItemCount(1)
|
||||
.maxItemCount(2)
|
||||
@@ -383,7 +382,8 @@ class JdbcPagingItemReaderBuilderTests {
|
||||
|
||||
}
|
||||
|
||||
public record Bar(int id, int first, String second, String third) {}
|
||||
public record Bar(int id, int first, String second, String third) {
|
||||
}
|
||||
|
||||
@Configuration
|
||||
public static class TestDataSourceConfiguration {
|
||||
@@ -394,7 +394,7 @@ class JdbcPagingItemReaderBuilderTests {
|
||||
FIRST BIGINT ,
|
||||
SECOND VARCHAR(5) NOT NULL,
|
||||
THIRD VARCHAR(5) NOT NULL) ;
|
||||
|
||||
|
||||
CREATE TABLE BAR (
|
||||
ID BIGINT IDENTITY NOT NULL PRIMARY KEY ,
|
||||
FIRST BIGINT ,
|
||||
@@ -407,7 +407,7 @@ class JdbcPagingItemReaderBuilderTests {
|
||||
INSERT INTO FOO (FIRST, SECOND, THIRD) VALUES (7, '8', '9');
|
||||
INSERT INTO FOO (FIRST, SECOND, THIRD) VALUES (10, '11', '12');
|
||||
INSERT INTO FOO (FIRST, SECOND, THIRD) VALUES (13, '14', '15');
|
||||
|
||||
|
||||
INSERT INTO BAR (FIRST, SECOND, THIRD) VALUES (1, '2', '3');
|
||||
INSERT INTO BAR (FIRST, SECOND, THIRD) VALUES (4, '5', '6');
|
||||
INSERT INTO BAR (FIRST, SECOND, THIRD) VALUES (7, '8', '9');
|
||||
|
||||
Reference in New Issue
Block a user