package org.tests.update;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.SqlUpdate;
import org.junit.Test;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
@Test
public void test() {
SqlUpdate sqlUpdate = Ebean.createSqlUpdate("delete from o_customer where id in (:ids)");
sqlUpdate.setParameter("ids", asList(9991, 9992, 9993));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?,?)", sqlUpdate.getGeneratedSql());
// 3 parameters in the IN clause
sqlUpdate.setParameter("ids", asList(9991, 9992));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?)", sqlUpdate.getGeneratedSql());
}
@Test
public void test_multipleLists() {
SqlUpdate sqlUpdate = Ebean.createSqlUpdate("delete from o_customer where id in (:ids) and name in (:names)");
sqlUpdate.setParameter("ids", asList(9991, 9992, 9993));
sqlUpdate.setParameter("names", asList("rob", "jim"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?,?) and name in (?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate.setParameter("ids", asList(9991, 9992));
sqlUpdate.setParameter("names", asList("rob", "jim", "sd"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?) and name in (?,?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate.setParameter("ids", asList(9991, 9992));
sqlUpdate.setParameter("names", asList("rob", "jim"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?) and name in (?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate.setParameter("ids", asList(9991));
sqlUpdate.setParameter("names", asList("rob", "jim"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?) and name in (?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate.setParameter("ids", asList(9992));
sqlUpdate.setParameter("names", asList("ro3b", "j3im"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?) and name in (?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate.setParameter("ids", asList(9992, 4545));
sqlUpdate.setParameter("names", asList("ro3b"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?) and name in (?)", sqlUpdate.getGeneratedSql());
}
}