Skip to content

Commit 24b2b75

Browse files
committed
refine parameterValuesSupplier
1 parent 79cf53a commit 24b2b75

File tree

6 files changed

+41
-35
lines changed

6 files changed

+41
-35
lines changed

src/main/java/org/mybatis/spring/batch/MyBatisCursorItemReader.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.HashMap;
2222
import java.util.Iterator;
2323
import java.util.Map;
24+
import java.util.Optional;
2425
import java.util.function.Supplier;
2526

2627
import org.apache.ibatis.cursor.Cursor;
@@ -42,7 +43,7 @@ public class MyBatisCursorItemReader<T> extends AbstractItemCountingItemStreamIt
4243
private SqlSession sqlSession;
4344

4445
private Map<String, Object> parameterValues;
45-
private Supplier<Map<String, Object>> parameterSupplier;
46+
private Supplier<Map<String, Object>> parameterValuesSupplier;
4647

4748
private Cursor<T> cursor;
4849
private Iterator<T> cursorIterator;
@@ -67,10 +68,7 @@ protected void doOpen() throws Exception {
6768
parameters.putAll(parameterValues);
6869
}
6970

70-
Map<String, Object> dynamicParameters;
71-
if (parameterSupplier != null && (dynamicParameters = parameterSupplier.get()) != null) {
72-
parameters.putAll(dynamicParameters);
73-
}
71+
Optional.ofNullable(parameterValuesSupplier).map(Supplier::get).ifPresent(parameters::putAll);
7472

7573
sqlSession = sqlSessionFactory.openSession(ExecutorType.SIMPLE);
7674
cursor = sqlSession.selectCursor(queryId, parameters);
@@ -132,10 +130,12 @@ public void setParameterValues(Map<String, Object> parameterValues) {
132130
/**
133131
* The parameter supplier used to get parameter values for the query execution.
134132
*
135-
* @param parameterSupplier
133+
* @param parameterValuesSupplier
136134
* the supplier used to get values keyed by the parameter named used in the query string.
135+
*
136+
* @since 2.1.0
137137
*/
138-
public void setParameterSupplier(Supplier<Map<String, Object>> parameterSupplier) {
139-
this.parameterSupplier = parameterSupplier;
138+
public void setParameterValuesSupplier(Supplier<Map<String, Object>> parameterValuesSupplier) {
139+
this.parameterValuesSupplier = parameterValuesSupplier;
140140
}
141141
}

src/main/java/org/mybatis/spring/batch/MyBatisPagingItemReader.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import java.util.HashMap;
2222
import java.util.Map;
23+
import java.util.Optional;
2324
import java.util.concurrent.CopyOnWriteArrayList;
2425
import java.util.function.Supplier;
2526

@@ -48,7 +49,7 @@ public class MyBatisPagingItemReader<T> extends AbstractPagingItemReader<T> {
4849

4950
private Map<String, Object> parameterValues;
5051

51-
private Supplier<Map<String, Object>> parameterSupplier;
52+
private Supplier<Map<String, Object>> parameterValuesSupplier;
5253

5354
public MyBatisPagingItemReader() {
5455
setName(getShortName(MyBatisPagingItemReader.class));
@@ -87,11 +88,13 @@ public void setParameterValues(Map<String, Object> parameterValues) {
8788
/**
8889
* The parameter supplier used to get parameter values for the query execution.
8990
*
90-
* @param parameterSupplier
91+
* @param parameterValuesSupplier
9192
* the supplier used to get values keyed by the parameter named used in the query string.
93+
*
94+
* @since 2.1.0
9295
*/
93-
public void setParameterSupplier(Supplier<Map<String, Object>> parameterSupplier) {
94-
this.parameterSupplier = parameterSupplier;
96+
public void setParameterValuesSupplier(Supplier<Map<String, Object>> parameterValuesSupplier) {
97+
this.parameterValuesSupplier = parameterValuesSupplier;
9598
}
9699

97100
/**
@@ -115,10 +118,7 @@ protected void doReadPage() {
115118
if (parameterValues != null) {
116119
parameters.putAll(parameterValues);
117120
}
118-
Map<String, Object> dynamicParameters;
119-
if (parameterSupplier != null && (dynamicParameters = parameterSupplier.get()) != null) {
120-
parameters.putAll(dynamicParameters);
121-
}
121+
Optional.ofNullable(parameterValuesSupplier).map(Supplier::get).ifPresent(parameters::putAll);
122122
parameters.put("_page", getPage());
123123
parameters.put("_pagesize", getPageSize());
124124
parameters.put("_skiprows", getPage() * getPageSize());

src/main/java/org/mybatis/spring/batch/builder/MyBatisCursorItemReaderBuilder.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class MyBatisCursorItemReaderBuilder<T> {
3636
private SqlSessionFactory sqlSessionFactory;
3737
private String queryId;
3838
private Map<String, Object> parameterValues;
39-
private Supplier<Map<String, Object>> parameterSupplier;
39+
private Supplier<Map<String, Object>> parameterValuesSupplier;
4040
private Boolean saveState;
4141
private Integer maxItemCount;
4242

@@ -88,15 +88,18 @@ public MyBatisCursorItemReaderBuilder<T> parameterValues(Map<String, Object> par
8888
/**
8989
* Set the parameter supplier to be used to get parameters for the query execution.
9090
*
91-
* @param parameterSupplier
91+
* @param parameterValuesSupplier
9292
* the parameter supplier to be used to get parameters for the query execution
9393
*
9494
* @return this instance for method chaining
9595
*
96-
* @see MyBatisCursorItemReader#setParameterSupplier(Supplier)
96+
* @see MyBatisCursorItemReader#setParameterValuesSupplier(Supplier)
97+
*
98+
* @since 2.1.0
9799
*/
98-
public MyBatisCursorItemReaderBuilder<T> parameterSupplier(Supplier<Map<String, Object>> parameterSupplier) {
99-
this.parameterSupplier = parameterSupplier;
100+
public MyBatisCursorItemReaderBuilder<T> parameterValuesSupplier(
101+
Supplier<Map<String, Object>> parameterValuesSupplier) {
102+
this.parameterValuesSupplier = parameterValuesSupplier;
100103
return this;
101104
}
102105

@@ -141,7 +144,7 @@ public MyBatisCursorItemReader<T> build() {
141144
reader.setSqlSessionFactory(this.sqlSessionFactory);
142145
reader.setQueryId(this.queryId);
143146
reader.setParameterValues(this.parameterValues);
144-
reader.setParameterSupplier(this.parameterSupplier);
147+
reader.setParameterValuesSupplier(this.parameterValuesSupplier);
145148
Optional.ofNullable(this.saveState).ifPresent(reader::setSaveState);
146149
Optional.ofNullable(this.maxItemCount).ifPresent(reader::setMaxItemCount);
147150
return reader;

src/main/java/org/mybatis/spring/batch/builder/MyBatisPagingItemReaderBuilder.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class MyBatisPagingItemReaderBuilder<T> {
3636
private SqlSessionFactory sqlSessionFactory;
3737
private String queryId;
3838
private Map<String, Object> parameterValues;
39-
private Supplier<Map<String, Object>> parameterSupplier;
39+
private Supplier<Map<String, Object>> parameterValuesSupplier;
4040
private Integer pageSize;
4141
private Boolean saveState;
4242
private Integer maxItemCount;
@@ -89,15 +89,18 @@ public MyBatisPagingItemReaderBuilder<T> parameterValues(Map<String, Object> par
8989
/**
9090
* Set the parameter supplier to be used to get parameters for the query execution.
9191
*
92-
* @param parameterSupplier
92+
* @param parameterValuesSupplier
9393
* the parameter supplier to be used to get parameters for the query execution
9494
*
9595
* @return this instance for method chaining
9696
*
97-
* @see MyBatisPagingItemReader#setParameterSupplier(Supplier)
97+
* @see MyBatisPagingItemReader#setParameterValuesSupplier(Supplier)
98+
*
99+
* @since 2.1.0
98100
*/
99-
public MyBatisPagingItemReaderBuilder<T> parameterSupplier(Supplier<Map<String, Object>> parameterSupplier) {
100-
this.parameterSupplier = parameterSupplier;
101+
public MyBatisPagingItemReaderBuilder<T> parameterValuesSupplier(
102+
Supplier<Map<String, Object>> parameterValuesSupplier) {
103+
this.parameterValuesSupplier = parameterValuesSupplier;
101104
return this;
102105
}
103106

@@ -157,7 +160,7 @@ public MyBatisPagingItemReader<T> build() {
157160
reader.setSqlSessionFactory(this.sqlSessionFactory);
158161
reader.setQueryId(this.queryId);
159162
reader.setParameterValues(this.parameterValues);
160-
reader.setParameterSupplier(this.parameterSupplier);
163+
reader.setParameterValuesSupplier(this.parameterValuesSupplier);
161164
Optional.ofNullable(this.pageSize).ifPresent(reader::setPageSize);
162165
Optional.ofNullable(this.saveState).ifPresent(reader::setSaveState);
163166
Optional.ofNullable(this.maxItemCount).ifPresent(reader::setMaxItemCount);

src/test/java/org/mybatis/spring/batch/builder/MyBatisCursorItemReaderBuilderTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ void testConfiguration() throws Exception {
7272
.sqlSessionFactory(this.sqlSessionFactory)
7373
.queryId("selectFoo")
7474
.parameterValues(Collections.singletonMap("id", 1))
75-
.parameterSupplier(() -> Collections.singletonMap("name", "Doe"))
75+
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
7676
.build();
7777
// @formatter:on
7878
itemReader.afterPropertiesSet();
@@ -99,7 +99,7 @@ void testConfigurationSaveStateIsFalse() throws Exception {
9999
.sqlSessionFactory(this.sqlSessionFactory)
100100
.queryId("selectFoo")
101101
.parameterValues(Collections.singletonMap("id", 1))
102-
.parameterSupplier(() -> Collections.singletonMap("name", "Doe"))
102+
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
103103
.saveState(false)
104104
.build();
105105
// @formatter:on
@@ -125,7 +125,7 @@ void testConfigurationMaxItemCount() throws Exception {
125125
.sqlSessionFactory(this.sqlSessionFactory)
126126
.queryId("selectFoo")
127127
.parameterValues(Collections.singletonMap("id", 1))
128-
.parameterSupplier(() -> Collections.singletonMap("name", "Doe"))
128+
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
129129
.maxItemCount(2)
130130
.build();
131131
// @formatter:on

src/test/java/org/mybatis/spring/batch/builder/MyBatisPagingItemReaderBuilderTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ void testConfiguration() throws Exception {
8181
.sqlSessionFactory(this.sqlSessionFactory)
8282
.queryId("selectFoo")
8383
.parameterValues(Collections.singletonMap("id", 1))
84-
.parameterSupplier(() -> Collections.singletonMap("name", "Doe"))
84+
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
8585
.build();
8686
// @formatter:on
8787
itemReader.afterPropertiesSet();
@@ -107,7 +107,7 @@ void testConfigurationSaveStateIsFalse() throws Exception {
107107
.sqlSessionFactory(this.sqlSessionFactory)
108108
.queryId("selectFoo")
109109
.parameterValues(Collections.singletonMap("id", 1))
110-
.parameterSupplier(() -> Collections.singletonMap("name", "Doe"))
110+
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
111111
.saveState(false)
112112
.build();
113113
// @formatter:on
@@ -131,7 +131,7 @@ void testConfigurationMaxItemCount() throws Exception {
131131
.sqlSessionFactory(this.sqlSessionFactory)
132132
.queryId("selectFoo")
133133
.parameterValues(Collections.singletonMap("id", 1))
134-
.parameterSupplier(() -> Collections.singletonMap("name", "Doe"))
134+
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
135135
.maxItemCount(2)
136136
.build();
137137
// @formatter:on
@@ -156,7 +156,7 @@ void testConfigurationPageSize() throws Exception {
156156
.sqlSessionFactory(this.sqlSessionFactory)
157157
.queryId("selectFoo")
158158
.parameterValues(Collections.singletonMap("id", 1))
159-
.parameterSupplier(() -> Collections.singletonMap("name", "Doe"))
159+
.parameterValuesSupplier(() -> Collections.singletonMap("name", "Doe"))
160160
.pageSize(2)
161161
.build();
162162
// @formatter:on

0 commit comments

Comments
 (0)