diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java
index 7b6b7029e5..a4277d4436 100644
--- a/jOOQ/src/main/java/org/jooq/DSLContext.java
+++ b/jOOQ/src/main/java/org/jooq/DSLContext.java
@@ -8438,6 +8438,28 @@ public interface DSLContext extends Scope , AutoCloseable {
@Support
Batch batchUpdate(Collection extends UpdatableRecord>> records);
+ /**
+ * Create a batch statement to execute a set of MERGE queries
+ * in batch mode (with bind values) according to
+ * {@link UpdatableRecord#merge()} semantics.
+ *
+ * @see UpdatableRecord#merge()
+ * @see java.sql.Statement#executeBatch()
+ */
+ @Support
+ Batch batchMerge(UpdatableRecord>... records);
+
+ /**
+ * Create a batch statement to execute a set of MERGE queries
+ * in batch mode (with bind values) according to
+ * {@link UpdatableRecord#merge()} semantics.
+ *
+ * @see UpdatableRecord#merge()
+ * @see java.sql.Statement#executeBatch()
+ */
+ @Support
+ Batch batchMerge(Collection extends UpdatableRecord>> records);
+
/**
* Create a batch statement to execute a set of DELETE queries
* in batch mode (with bind values) according to
diff --git a/jOOQ/src/main/java/org/jooq/impl/BatchCRUD.java b/jOOQ/src/main/java/org/jooq/impl/BatchCRUD.java
index c56b584215..4cd6a06177 100644
--- a/jOOQ/src/main/java/org/jooq/impl/BatchCRUD.java
+++ b/jOOQ/src/main/java/org/jooq/impl/BatchCRUD.java
@@ -202,6 +202,9 @@ final class BatchCRUD extends AbstractBatch {
case UPDATE:
((UpdatableRecord>) records[i]).update();
break;
+ case MERGE:
+ ((UpdatableRecord>) records[i]).merge();
+ break;
case DELETE:
((UpdatableRecord>) records[i]).delete();
break;
@@ -223,27 +226,32 @@ final class BatchCRUD extends AbstractBatch {
}
/**
- * The action to be performed by this operation
+ * The action to be performed by this operation.
*/
enum Action {
/**
- * Corresponds to {@link UpdatableRecord#store()}
+ * Corresponds to {@link UpdatableRecord#store()}.
*/
STORE,
/**
- * Corresponds to {@link UpdatableRecord#insert()}
+ * Corresponds to {@link UpdatableRecord#insert()}.
*/
INSERT,
/**
- * Corresponds to {@link UpdatableRecord#update()}
+ * Corresponds to {@link UpdatableRecord#update()}.
*/
UPDATE,
/**
- * Corresponds to {@link UpdatableRecord#delete()}
+ * Corresponds to {@link UpdatableRecord#merge()}.
+ */
+ MERGE,
+
+ /**
+ * Corresponds to {@link UpdatableRecord#delete()}.
*/
DELETE
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java
index 4f82ccd03f..00055e48d4 100644
--- a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java
+++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java
@@ -2893,6 +2893,16 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri
return batchUpdate(records.toArray(EMPTY_UPDATABLE_RECORD));
}
+ @Override
+ public Batch batchMerge(UpdatableRecord>... records) {
+ return new BatchCRUD(configuration(), Action.MERGE, records);
+ }
+
+ @Override
+ public Batch batchMerge(Collection extends UpdatableRecord>> records) {
+ return batchMerge(records.toArray(EMPTY_UPDATABLE_RECORD));
+ }
+
@Override
public Batch batchDelete(UpdatableRecord>... records) {
return new BatchCRUD(configuration(), Action.DELETE, records);