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> 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> 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> records) { + return batchMerge(records.toArray(EMPTY_UPDATABLE_RECORD)); + } + @Override public Batch batchDelete(UpdatableRecord... records) { return new BatchCRUD(configuration(), Action.DELETE, records);