Skip to content

Commit 531273b

Browse files
committed
Provide default results on execution skip
1 parent 01db344 commit 531273b

File tree

10 files changed

+61
-20
lines changed

10 files changed

+61
-20
lines changed

doma-core/src/main/java/org/seasar/doma/jdbc/CommandImplementors.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.lang.reflect.Method;
1919
import java.util.function.BiFunction;
20+
import java.util.function.Supplier;
2021
import org.seasar.doma.jdbc.aggregate.AggregateCommand;
2122
import org.seasar.doma.jdbc.aggregate.AggregateStrategyType;
2223
import org.seasar.doma.jdbc.aggregate.StreamReducer;
@@ -112,8 +113,11 @@ default UpdateCommand createUpdateCommand(Method method, UpdateQuery query) {
112113

113114
// TODO
114115
default <RESULT> DeleteReturningCommand<RESULT> createDeleteReturningCommand(
115-
Method method, DeleteQuery query, ResultSetHandler<RESULT> resultSetHandler) {
116-
return new DeleteReturningCommand<>(query, resultSetHandler);
116+
Method method,
117+
DeleteQuery query,
118+
ResultSetHandler<RESULT> resultSetHandler,
119+
Supplier<RESULT> emptyResultSupplier) {
120+
return new DeleteReturningCommand<>(query, resultSetHandler, emptyResultSupplier);
117121
}
118122

119123
/**
@@ -125,14 +129,20 @@ default <RESULT> DeleteReturningCommand<RESULT> createDeleteReturningCommand(
125129
* @return the command
126130
*/
127131
default <RESULT> InsertReturningCommand<RESULT> createInsertReturningCommand(
128-
Method method, InsertQuery query, ResultSetHandler<RESULT> resultSetHandler) {
129-
return new InsertReturningCommand<>(query, resultSetHandler);
132+
Method method,
133+
InsertQuery query,
134+
ResultSetHandler<RESULT> resultSetHandler,
135+
Supplier<RESULT> emptyResultSupplier) {
136+
return new InsertReturningCommand<>(query, resultSetHandler, emptyResultSupplier);
130137
}
131138

132139
// TODO
133140
default <RESULT> UpdateReturningCommand<RESULT> createUpdateReturningCommand(
134-
Method method, UpdateQuery query, ResultSetHandler<RESULT> resultSetHandler) {
135-
return new UpdateReturningCommand<>(query, resultSetHandler);
141+
Method method,
142+
UpdateQuery query,
143+
ResultSetHandler<RESULT> resultSetHandler,
144+
Supplier<RESULT> emptyResultSupplier) {
145+
return new UpdateReturningCommand<>(query, resultSetHandler, emptyResultSupplier);
136146
}
137147

138148
/**

doma-core/src/main/java/org/seasar/doma/jdbc/command/DeleteReturningCommand.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@
1717

1818
import java.sql.PreparedStatement;
1919
import java.sql.SQLException;
20+
import java.util.function.Supplier;
2021
import org.seasar.doma.jdbc.query.DeleteQuery;
2122
import org.seasar.doma.jdbc.statistic.StatisticManager;
2223

2324
public class DeleteReturningCommand<RESULT> extends ModifyReturningCommand<DeleteQuery, RESULT> {
2425

25-
public DeleteReturningCommand(DeleteQuery query, ResultSetHandler<RESULT> resultSetHandler) {
26-
super(query, resultSetHandler);
26+
public DeleteReturningCommand(
27+
DeleteQuery query,
28+
ResultSetHandler<RESULT> resultSetHandler,
29+
Supplier<RESULT> emptyResultSupplier) {
30+
super(query, resultSetHandler, emptyResultSupplier);
2731
}
2832

2933
@Override

doma-core/src/main/java/org/seasar/doma/jdbc/command/InsertReturningCommand.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@
1717

1818
import java.sql.PreparedStatement;
1919
import java.sql.SQLException;
20+
import java.util.function.Supplier;
2021
import org.seasar.doma.jdbc.query.InsertQuery;
2122
import org.seasar.doma.jdbc.statistic.StatisticManager;
2223

2324
public class InsertReturningCommand<RESULT> extends ModifyReturningCommand<InsertQuery, RESULT> {
2425

25-
public InsertReturningCommand(InsertQuery query, ResultSetHandler<RESULT> resultSetHandler) {
26-
super(query, resultSetHandler);
26+
public InsertReturningCommand(
27+
InsertQuery query,
28+
ResultSetHandler<RESULT> resultSetHandler,
29+
Supplier<RESULT> emptyResultSupplier) {
30+
super(query, resultSetHandler, emptyResultSupplier);
2731
}
2832

2933
@Override

doma-core/src/main/java/org/seasar/doma/jdbc/command/ModifyReturningCommand.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,17 @@ public abstract class ModifyReturningCommand<QUERY extends ModifyQuery, RESULT>
4646

4747
protected final ResultSetHandler<RESULT> resultSetHandler;
4848

49-
protected ModifyReturningCommand(QUERY query, ResultSetHandler<RESULT> resultSetHandler) {
50-
assertNotNull(query, resultSetHandler);
49+
protected final Supplier<RESULT> emptyResultSupplier;
50+
51+
protected ModifyReturningCommand(
52+
QUERY query,
53+
ResultSetHandler<RESULT> resultSetHandler,
54+
Supplier<RESULT> emptyResultSupplier) {
55+
assertNotNull(query, resultSetHandler, emptyResultSupplier);
5156
this.query = query;
5257
this.sql = query.getSql();
5358
this.resultSetHandler = resultSetHandler;
59+
this.emptyResultSupplier = emptyResultSupplier;
5460
}
5561

5662
@Override
@@ -64,8 +70,7 @@ public RESULT execute() {
6470
JdbcLogger logger = query.getConfig().getJdbcLogger();
6571
logger.logSqlExecutionSkipping(
6672
query.getClassName(), query.getMethodName(), query.getSqlExecutionSkipCause());
67-
// TODO
68-
return null;
73+
return emptyResultSupplier.get();
6974
}
7075
Connection connection = JdbcUtil.getConnection(query.getConfig().getDataSource());
7176
try {

doma-core/src/main/java/org/seasar/doma/jdbc/command/UpdateReturningCommand.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@
1717

1818
import java.sql.PreparedStatement;
1919
import java.sql.SQLException;
20+
import java.util.function.Supplier;
2021
import org.seasar.doma.jdbc.query.UpdateQuery;
2122
import org.seasar.doma.jdbc.statistic.StatisticManager;
2223

2324
public class UpdateReturningCommand<RESULT> extends ModifyReturningCommand<UpdateQuery, RESULT> {
2425

25-
public UpdateReturningCommand(UpdateQuery query, ResultSetHandler<RESULT> resultSetHandler) {
26-
super(query, resultSetHandler);
26+
public UpdateReturningCommand(
27+
UpdateQuery query,
28+
ResultSetHandler<RESULT> resultSetHandler,
29+
Supplier<RESULT> emptyResultSupplier) {
30+
super(query, resultSetHandler, emptyResultSupplier);
2731
}
2832

2933
@Override

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlDeleteStatement.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ private Command<Result<ENTITY>> createReturningCommand(
107107
config
108108
.getCommandImplementors()
109109
.createDeleteReturningCommand(
110-
EXECUTE_METHOD, query, new EntitySingleResultHandler<>(entityType));
110+
EXECUTE_METHOD, query, new EntitySingleResultHandler<>(entityType), () -> null);
111111
return new Command<>() {
112112
@Override
113113
public Query getQuery() {

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlInsertTerminal.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ private Command<Result<ENTITY>> createReturningCommand(
122122
config
123123
.getCommandImplementors()
124124
.createInsertReturningCommand(
125-
EXECUTE_METHOD, query, new EntitySingleResultHandler<>(entityType));
125+
EXECUTE_METHOD, query, new EntitySingleResultHandler<>(entityType), () -> null);
126126
return new Command<>() {
127127
@Override
128128
public Query getQuery() {

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlMultiInsertTerminal.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import static org.seasar.doma.jdbc.criteria.statement.EntityqlMultiInsertStatement.EMPTY_SQL;
1919

20+
import java.util.Collections;
2021
import java.util.List;
2122
import java.util.Objects;
2223
import org.seasar.doma.internal.jdbc.command.EntityResultListHandler;
@@ -123,7 +124,10 @@ private Command<MultiResult<ENTITY>> createReturningCommand(
123124
config
124125
.getCommandImplementors()
125126
.createInsertReturningCommand(
126-
EXECUTE_METHOD, query, new EntityResultListHandler<>(entityType));
127+
EXECUTE_METHOD,
128+
query,
129+
new EntityResultListHandler<>(entityType),
130+
Collections::emptyList);
127131
return new Command<>() {
128132
@Override
129133
public Query getQuery() {

doma-core/src/main/java/org/seasar/doma/jdbc/criteria/statement/EntityqlUpdateStatement.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ private Command<Result<ENTITY>> createReturningCommand(
115115
config
116116
.getCommandImplementors()
117117
.createUpdateReturningCommand(
118-
EXECUTE_METHOD, query, new EntitySingleResultHandler<>(entityType));
118+
EXECUTE_METHOD, query, new EntitySingleResultHandler<>(entityType), () -> null);
119119
return new Command<>() {
120120
@Override
121121
public Query getQuery() {

integration-test-java/src/test/java/org/seasar/doma/it/criteria/QueryDslEntityMultiInsertTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,16 @@ void returning() {
338338
assertEquals(1, entity2.getVersion());
339339
}
340340

341+
@Test
342+
void returning_skip() {
343+
Department_ d = new Department_();
344+
345+
MultiResult<Department> result =
346+
dsl.insert(d).multi(Collections.emptyList()).returning().execute();
347+
assertTrue(result.getEntities().isEmpty());
348+
assertEquals(0, result.getCount());
349+
}
350+
341351
@Test
342352
@Run(unless = {Dbms.MYSQL, Dbms.MYSQL8, Dbms.ORACLE})
343353
void returning_ignore() {

0 commit comments

Comments
 (0)