From 3e43d544fb2027819ad2a5e133a86883ffd9c87e Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Fri, 7 Feb 2020 16:10:11 +1300 Subject: [PATCH] #1936 - ENH: Add saveAll(Object... beans) ... using varargs for DB and Database --- src/main/java/io/ebean/DB.java | 7 +++++ src/main/java/io/ebean/Database.java | 5 ++++ .../server/core/DefaultServer.java | 6 ++++ .../ebean/EbeanServer_deleteAllByIdTest.java | 28 +++++++++++++++++++ .../ebeaninternal/api/TDSpiEbeanServer.java | 5 ++++ 5 files changed, 51 insertions(+) diff --git a/src/main/java/io/ebean/DB.java b/src/main/java/io/ebean/DB.java index 3d05b8e56..bcb46b3e9 100644 --- a/src/main/java/io/ebean/DB.java +++ b/src/main/java/io/ebean/DB.java @@ -454,6 +454,13 @@ public class DB { return getDefault().saveAll(beans); } + /** + * Save all the beans from a Collection. + */ + public static int saveAll(Object... beans) throws OptimisticLockException { + return getDefault().saveAll(beans); + } + /** * This method checks the uniqueness of a bean. I.e. if the save will work. It will return the * properties that violates an unique / primary key. This may be done in an UI save action to diff --git a/src/main/java/io/ebean/Database.java b/src/main/java/io/ebean/Database.java index 8617b60be..784f4804d 100644 --- a/src/main/java/io/ebean/Database.java +++ b/src/main/java/io/ebean/Database.java @@ -881,6 +881,11 @@ public interface Database { */ int saveAll(Collection beans) throws OptimisticLockException; + /** + * Save all the beans. + */ + int saveAll(Object... beans) throws OptimisticLockException; + /** * Delete the bean. *

diff --git a/src/main/java/io/ebeaninternal/server/core/DefaultServer.java b/src/main/java/io/ebeaninternal/server/core/DefaultServer.java index 985d7c114..0ee1b76c6 100644 --- a/src/main/java/io/ebeaninternal/server/core/DefaultServer.java +++ b/src/main/java/io/ebeaninternal/server/core/DefaultServer.java @@ -131,6 +131,7 @@ import java.sql.PreparedStatement; import java.sql.SQLException; import java.time.Clock; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -1916,6 +1917,11 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { return saveAllInternal(beans, null); } + @Override + public int saveAll(Object... beans) throws OptimisticLockException { + return saveAllInternal(Arrays.asList(beans), null); + } + /** * Save all beans in the iterator with an explicit transaction. */ diff --git a/src/test/java/io/ebean/EbeanServer_deleteAllByIdTest.java b/src/test/java/io/ebean/EbeanServer_deleteAllByIdTest.java index 819419fbc..6ab6db3e7 100644 --- a/src/test/java/io/ebean/EbeanServer_deleteAllByIdTest.java +++ b/src/test/java/io/ebean/EbeanServer_deleteAllByIdTest.java @@ -8,10 +8,38 @@ import java.util.ArrayList; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertNotNull; public class EbeanServer_deleteAllByIdTest extends BaseTestCase { + @Test + public void saveAllByVarArgs() { + + final EBasicVer bean0 = bean("foo0"); + final EBasicVer bean1 = bean("foo1"); + final EBasicVer bean2 = bean("foo2"); + + LoggedSqlCollector.start(); + + DB.saveAll(bean0, bean1, bean2); + + assertNotNull(bean0.getId()); + assertNotNull(bean1.getId()); + assertNotNull(bean2.getId()); + + List loggedSql = LoggedSqlCollector.stop(); + assertThat(loggedSql).hasSize(4); + assertThat(loggedSql.get(0)).contains("insert into e_basicver"); + assertSqlBind(loggedSql, 1, 3); + + List ids = new ArrayList<>(); + ids.add(bean0.getId()); + ids.add(bean1.getId()); + ids.add(bean2.getId()); + DB.deleteAll(EBasicVer.class, ids); + } + @Test public void deleteAllById() { diff --git a/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java b/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java index ae87ff71c..1ca413acc 100644 --- a/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java +++ b/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java @@ -901,6 +901,11 @@ public class TDSpiEbeanServer implements SpiEbeanServer { return null; } + @Override + public int saveAll(Object... beans) throws OptimisticLockException { + return 0; + } + @Override public int saveAll(Collection beans) throws OptimisticLockException { return 0;