Skip to content

Commit bd253cb

Browse files
committed
Start of better support for insertMultiple with Generated Keys in MyBatis
1 parent b67ea69 commit bd253cb

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/main/java/org/mybatis/dynamic/sql/util/SqlProviderAdapter.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
2424
import org.mybatis.dynamic.sql.update.render.UpdateStatementProvider;
2525

26+
import java.util.List;
27+
import java.util.Map;
28+
import java.util.stream.Collectors;
29+
2630
/**
2731
* Adapter for use with MyBatis SQL provider annotations.
2832
*
@@ -47,6 +51,19 @@ public String insertMultiple(MultiRowInsertStatementProvider<?> insertStatement)
4751
return insertStatement.getInsertStatement();
4852
}
4953

54+
public String insertMultipleWithGeneratedKeys(Map<String, Object> parameterMap) {
55+
List<String> entries = parameterMap.entrySet().stream()
56+
.filter(e -> e.getKey().startsWith("param")) //$NON-NLS-1$
57+
.filter(e -> e.getValue() instanceof String)
58+
.map(e -> (String) e.getValue())
59+
.collect(Collectors.toList());
60+
if (entries.size() == 1) {
61+
return entries.get(0);
62+
} else {
63+
throw new RuntimeException("The parameters for insertMultipleWithGeneratedKeys must contain exactly one parameter of type String");
64+
}
65+
}
66+
5067
public String insertSelect(InsertSelectStatementProvider insertStatement) {
5168
return insertStatement.getInsertStatement();
5269
}

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/mybatis3/MapperSupportFunctions.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,16 @@ fun <T> insertMultiple(
6767
) =
6868
mapper(SqlBuilder.insertMultiple(records).into(table, completer))
6969

70+
fun <T> insertMultipleWithGeneratedKeys(
71+
mapper: (String, List<T>) -> Int,
72+
records: Collection<T>,
73+
table: SqlTable,
74+
completer: MultiRowInsertCompleter<T>
75+
): Int =
76+
with(insertMultiple(records).into(table, completer)) {
77+
mapper(insertStatement, this.records)
78+
}
79+
7080
fun insertSelect(
7181
mapper: (InsertSelectStatementProvider) -> Int,
7282
table: SqlTable,

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy