Merge pull request #1939 from ebean-orm/feature/1938

#1938 - API consistency add setParameters(varargs) & setParameter() - migrate from setNextParameter() and setParams()
This commit is contained in:
Rob Bygrave
2020-02-17 11:37:34 +13:00
committed by GitHub
44 changed files with 386 additions and 159 deletions
+19 -2
View File
@@ -77,12 +77,29 @@ public interface DtoQuery<T> {
Optional<T> findOneOrEmpty();
/**
* The same as bind for named parameters.
* Bind all the parameters using index positions.
* <p>
* Binds each parameter moving the index position each time.
* <p>
* A convenience for multiple calls to {@link #setParameter(Object)}
*/
DtoQuery<T> setParameters(Object... value);
/**
* Bind the next parameter using index position.
* <p>
* Bind the parameter using index position starting at 1 and incrementing.
* <p>
*/
DtoQuery<T> setParameter(Object value);
/**
* Bind the named parameter.
*/
DtoQuery<T> setParameter(String name, Object value);
/**
* The same as bind for positioned parameters.
* Bind the parameter by its index position (1 based like JDBC).
*/
DtoQuery<T> setParameter(int position, Object value);
+24
View File
@@ -1183,6 +1183,30 @@ public interface Query<T> {
*/
Query<T> setParameter(int position, Object value);
/**
* Bind the next positioned parameter.
*
* <pre>{@code
*
* // a query with a positioned parameters
* String oql = "where status = ? and name = ?";
*
* List<Order> list = DB.createQuery(Order.class, oql)
* .setParameter(OrderStatus.NEW)
* .setParameter("Rob")
* .findList();
*
* }</pre>
*/
Query<T> setParameter(Object value);
/**
* Bind all the positioned parameters.
* <p>
* A convenience for multiple calls to {@link #setParameter(Object)}
*/
Query<T> setParameters(Object... values);
/**
* Set the Id value to query. This is used with findOne().
* <p>
+49 -16
View File
@@ -131,7 +131,7 @@ public interface SqlQuery extends Serializable {
* String sql = "select max(unit_price) from o_order_detail where order_qty > ?";
*
* BigDecimal maxPrice = DB.sqlQuery(sql)
* .setParameter(1, 2)
* .setParameter(42)
* .findSingleAttribute(BigDecimal.class);
*
* }</pre>
@@ -171,31 +171,24 @@ public interface SqlQuery extends Serializable {
* " where unit_price > ? " +
* " order by (unit_price * order_qty) desc";
*
* //
* List<BigDecimal> lineAmounts =
* DB.sqlQuery(sql)
* .setParameter(1, 3)
* .setParameter(42)
* .findSingleAttributeList(BigDecimal.class);
*
* }</pre>
*
* <p>
* The attributeType can be any scalar type that Ebean supports (includes javax time types, Joda types etc).
* </p>
*
* @param attributeType The type of the returned value
*/
<T> List<T> findSingleAttributeList(Class<T> attributeType);
/**
* The same as bind for named parameters.
*/
SqlQuery setParameter(String name, Object value);
/**
* Set one of more positioned parameters.
* <p>
* This is a convenient alternative to multiple calls setParameter().
* This is a convenient alternative to multiple calls to {@link #setParameter(Object)}.
*
* <pre>{@code
*
@@ -203,27 +196,67 @@ public interface SqlQuery extends Serializable {
*
* List<SqlRow> list =
* DB.sqlQuery(sql)
* .setParams("Rob", Status.NEW)
* .setParameters("Rob", Status.NEW)
* .findList();
*
*
* // is the same as ...
* // effectively the same as ...
*
* .setParameter("Rob")
* .setParameter("Status.NEW)
*
* // and ...
*
* List<SqlRow> list =
* DB.sqlQuery(sql)
* .setParameter(1, "Rob")
* .setParameter(2, "Status.NEW)
* .findList();
*
* }</pre>
*/
SqlQuery setParameters(Object... values);
/**
* Deprecated migrate to setParameters(Object... values)
*/
@Deprecated
SqlQuery setParams(Object... values);
/**
* The same as bind for positioned parameters.
* Set the next bind parameter by position.
* <pre>{@code
*
* String sql = "select id, name from customer where name like ? and status = ?";
*
* List<SqlRow> list =
* DB.sqlQuery(sql)
* .setParameter("Rob")
* .setParameter("Status.NEW)
* .findList();
*
* // the same as ...
*
* .setParameters("Rob", Status.NEW)
*
* // and ...
*
* .setParameter(1, "Rob")
* .setParameter(2, "Status.NEW)
*
* }</pre>
*
* @param value The value to bind
*/
SqlQuery setParameter(Object value);
/**
* Bind the parameter by its index position (1 based like JDBC).
*/
SqlQuery setParameter(int position, Object value);
/**
* Bind the named parameter value.
*/
SqlQuery setParameter(String name, Object value);
/**
* Set the index of the first row of the results to return.
*/
+22 -3
View File
@@ -239,28 +239,47 @@ public interface SqlUpdate {
* String sql = "insert into audit_log (id, name, version) values (?,?,?)";
*
* DB.sqlUpdate(sql)
* .setParams(UUID.randomUUID(), "Hello", 1)
* .setParameters(UUID.randomUUID(), "Hello", 1)
* .executeNow();
*
*
* // is the same as ...
*
* DB.sqlUpdate(sql)
* .setParameter(UUID.randomUUID())
* .setParameter("Hello")
* .setParameter(1)
* .executeNow();
*
* // which is the same as ...
*
* DB.sqlUpdate(sql)
* .setParameter(1, UUID.randomUUID())
* .setParameter(2, "Hello")
* .setParameter(3, 1)
* .executeNow();
*
* }</pre>
*
*/
SqlUpdate setParameters(Object... values);
/**
* Deprecated migrate to setParameters(Object... values).
*/
@Deprecated
SqlUpdate setParams(Object... values);
/**
* Set the next positioned parameter.
* Set the next bind parameter by position.
*
* @param value The value to bind
*/
SqlUpdate setParameter(Object value);
/**
* Deprecated migrate to setParameter(value).
*/
@Deprecated
SqlUpdate setNextParameter(Object value);
/**
@@ -38,6 +38,11 @@ public class BindParams implements Serializable {
*/
private String bindHash;
/**
* Helper to add positioned parameters in order.
*/
private int addPos;
public BindParams() {
}
@@ -156,6 +161,19 @@ public class BindParams implements Serializable {
p.setOutType(outType);
}
public void setNextParameters(Object... values) {
for (Object value : values) {
setNextParameter(value);
}
}
/**
* Bind the next positioned parameter.
*/
public void setNextParameter(Object value) {
setParameter(++addPos, value);
}
/**
* Using position set the In value of a parameter. Note that for nulls you
* must use setNullParameter.
@@ -265,6 +265,16 @@ public final class DefaultSqlUpdate implements Serializable, SpiSqlUpdate {
@Override
public SqlUpdate setParams(Object... values) {
return setParameters(values);
}
@Override
public SqlUpdate setNextParameter(Object value) {
return setParameter(value);
}
@Override
public SqlUpdate setParameters(Object... values) {
for (Object value : values) {
setParameter(++addPos, value);
}
@@ -272,7 +282,7 @@ public final class DefaultSqlUpdate implements Serializable, SpiSqlUpdate {
}
@Override
public SqlUpdate setNextParameter(Object value) {
public SqlUpdate setParameter(Object value) {
setParameter(++addPos, value);
return this;
}
@@ -296,7 +306,6 @@ public final class DefaultSqlUpdate implements Serializable, SpiSqlUpdate {
@Override
public SqlUpdate setParameter(int position, Object value) {
if (value instanceof Collection) {
String bindLiteral = "?" + position;
int pos = baseSql.indexOf(bindLiteral);
@@ -317,8 +326,7 @@ public final class DefaultSqlUpdate implements Serializable, SpiSqlUpdate {
@Override
public SqlUpdate setNullParameter(int position, int jdbcType) {
bindParams.setNullParameter(bindExpansion + position, jdbcType);
return this;
return setNull(position, jdbcType);
}
@Override
@@ -335,8 +343,7 @@ public final class DefaultSqlUpdate implements Serializable, SpiSqlUpdate {
@Override
public SqlUpdate setNullParameter(String name, int jdbcType) {
bindParams.setNullParameter(name, jdbcType);
return this;
return setNull(name, jdbcType);
}
/**
@@ -927,7 +927,7 @@ public class BeanDescriptor<T> implements BeanType<T>, STreeType {
public void bindElementValue(SqlUpdate insert, Object value) {
EntityBean bean = (EntityBean) value;
for (BeanProperty property : propertiesBaseScalar) {
insert.setNextParameter(property.getValue(bean));
insert.setParameter(property.getValue(bean));
}
}
@@ -1090,7 +1090,7 @@ public class BeanDescriptor<T> implements BeanType<T>, STreeType {
Object[] bindValues = idBinder.getBindValues(id);
for (Object bindValue : bindValues) {
sqlDelete.setNextParameter(bindValue);
sqlDelete.setParameter(bindValue);
}
return sqlDelete;
@@ -26,7 +26,7 @@ class BeanDescriptorElementScalar<T> extends BeanDescriptorElement<T> {
@Override
public void bindElementValue(SqlUpdate insert, Object value) {
insert.setNextParameter(value);
insert.setParameter(value);
}
@Override
@@ -539,12 +539,12 @@ public abstract class BeanPropertyAssoc<T> extends BeanProperty implements STree
void bindParentIds(DefaultSqlUpdate delete, List<Object> parentIds) {
if (isExportedSimple()) {
delete.setNextParameter(new MultiValueWrapper(parentIds));
delete.setParameter(new MultiValueWrapper(parentIds));
} else {
// embedded ids etc
List<Object> bindValues = flattenParentIds(parentIds);
for (Object bindValue : bindValues) {
delete.setNextParameter(bindValue);
delete.setParameter(bindValue);
}
}
}
@@ -552,12 +552,12 @@ public abstract class BeanPropertyAssoc<T> extends BeanProperty implements STree
void bindParentId(DefaultSqlUpdate sqlUpd, Object parentId) {
if (isExportedSimple()) {
sqlUpd.setNextParameter(parentId);
sqlUpd.setParameter(parentId);
return;
}
EntityBean parent = (EntityBean) parentId;
for (ExportedProperty exportedProperty : exportedProperties) {
sqlUpd.setNextParameter(exportedProperty.getValue(parent));
sqlUpd.setParameter(exportedProperty.getValue(parent));
}
}
@@ -816,7 +816,7 @@ public class BeanPropertyAssocMany<T> extends BeanPropertyAssoc<T> implements ST
parentBean = (EntityBean) idProp.getValue(parentBean);
}
for (ExportedProperty exportedProperty : exportedProperties) {
sql.setNextParameter(exportedProperty.getValue(parentBean));
sql.setParameter(exportedProperty.getValue(parentBean));
}
importedId.bindImport(sql, other);
}
@@ -15,7 +15,7 @@ public class BeanPropertySimpleCollection<T> extends BeanPropertyAssocMany<T> {
@Override
public void bindElementValue(SqlUpdate insert, Object value) {
insert.setNextParameter(value);
insert.setParameter(value);
}
@Override
@@ -275,7 +275,7 @@ public final class IdBinderEmbedded implements IdBinder {
public void bindId(DefaultSqlUpdate sqlUpdate, Object value) {
for (BeanProperty prop : props) {
Object embFieldValue = prop.getValue((EntityBean) value);
sqlUpdate.setNextParameter(embFieldValue);
sqlUpdate.setParameter(embFieldValue);
}
}
@@ -146,7 +146,7 @@ public final class IdBinderSimple implements IdBinder {
@Override
public void addIdInBindValues(DefaultSqlUpdate sqlUpdate, Collection<?> ids) {
sqlUpdate.setNextParameter(new MultiValueWrapper(ids));
sqlUpdate.setParameter(new MultiValueWrapper(ids));
}
@Override
@@ -171,7 +171,7 @@ public final class IdBinderSimple implements IdBinder {
@Override
public void bindId(DefaultSqlUpdate sqlUpdate, Object value) {
sqlUpdate.setNextParameter(value);
sqlUpdate.setParameter(value);
}
@Override
@@ -155,7 +155,7 @@ public class ImportedIdEmbedded implements ImportedId {
}
for (ImportedIdSimple anImported : imported) {
Object scalarValue = anImported.foreignProperty.getValue(embeddedId);
sql.setNextParameter(scalarValue);
sql.setParameter(scalarValue);
}
}
@@ -131,7 +131,7 @@ public final class ImportedIdSimple implements ImportedId, Comparable<ImportedId
if (value == null) {
throw new PersistenceException("Foreign Key value null?");
}
sql.setNextParameter(value);
sql.setParameter(value);
}
@Override
@@ -46,7 +46,7 @@ class SaveManyElementCollection extends SaveManyBase {
Object parentId = request.getBeanId();
for (Object value : collection) {
final SpiSqlUpdate sqlInsert = proto.copy();
sqlInsert.setNextParameter(parentId);
sqlInsert.setParameter(parentId);
many.bindElementValue(sqlInsert, value);
persister.addToFlushQueueLast(sqlInsert, transaction);
}
@@ -48,8 +48,8 @@ class SaveManyElementCollectionMap extends SaveManyBase {
Object parentId = request.getBeanId();
for (Map.Entry<?, ?> entry : entries) {
final SpiSqlUpdate sqlInsert = proto.copy();
sqlInsert.setNextParameter(parentId);
sqlInsert.setNextParameter(entry.getKey());
sqlInsert.setParameter(parentId);
sqlInsert.setParameter(entry.getKey());
many.bindElementValue(sqlInsert, entry.getValue());
persister.addToFlushQueueLast(sqlInsert, transaction);
}
@@ -383,6 +383,16 @@ class DefaultFetchGroupQuery<T> implements SpiFetchGroupQuery<T> {
throw new RuntimeException("EB102: Only select() and fetch() clause is allowed on FetchGroup");
}
@Override
public Query<T> setParameter(Object value) {
throw new RuntimeException("EB102: Only select() and fetch() clause is allowed on FetchGroup");
}
@Override
public Query<T> setParameters(Object... values) {
throw new RuntimeException("EB102: Only select() and fetch() clause is allowed on FetchGroup");
}
@Override
public Query<T> setId(Object id) {
throw new RuntimeException("EB102: Only select() and fetch() clause is allowed on FetchGroup");
@@ -142,6 +142,26 @@ public class DefaultDtoQuery<T> implements SpiDtoQuery<T> {
return this;
}
@Override
public DtoQuery<T> setParameters(Object... values) {
if (ormQuery != null) {
ormQuery.setParameters(values);
} else {
bindParams.setNextParameters(values);
}
return this;
}
@Override
public DtoQuery<T> setParameter(Object value) {
if (ormQuery != null) {
ormQuery.setParameter(value);
} else {
bindParams.setNextParameter(value);
}
return this;
}
@Override
public String toString() {
return "DtoQuery [" + sql + "]";
@@ -1596,6 +1596,24 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
return server.findPagedList(this, transaction);
}
@Override
public DefaultOrmQuery<T> setParameter(Object value) {
if (bindParams == null) {
bindParams = new BindParams();
}
bindParams.setNextParameter(value);
return this;
}
@Override
public DefaultOrmQuery<T> setParameters(Object... values) {
if (bindParams == null) {
bindParams = new BindParams();
}
bindParams.setNextParameters(values);
return this;
}
/**
* Set an ordered bind parameter according to its position. Note that the position starts at 1 to
* be consistent with JDBC PreparedStatement. You need to set a parameter value for each ? you
@@ -1615,7 +1633,6 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
*/
@Override
public DefaultOrmQuery<T> setParameter(String name, Object value) {
if (namedParams != null) {
ONamedParam param = namedParams.get(name);
if (param != null) {
@@ -34,11 +34,6 @@ public class DefaultRelationalQuery implements SpiSqlQuery {
private int bufferFetchSizeHint;
/**
* Helper to add positioned parameters in order.
*/
private int addPos;
/**
* Bind parameters when using the query language.
*/
@@ -113,10 +108,20 @@ public class DefaultRelationalQuery implements SpiSqlQuery {
}
@Override
@Deprecated
public DefaultRelationalQuery setParams(Object... values) {
for (Object value : values) {
setParameter(++addPos, value);
}
return setParameters(values);
}
@Override
public DefaultRelationalQuery setParameters(Object... values) {
bindParams.setNextParameters(values);
return this;
}
@Override
public DefaultRelationalQuery setParameter(Object value) {
bindParams.setNextParameter(value);
return this;
}
@@ -276,7 +276,7 @@ public class DtoQueryFromOrmTest extends BaseTestCase {
ResetBasicData.reset();
DB.sqlUpdate("update contact set is_member=? where last_name like ?")
.setParams(true, "B%")
.setParameters(true, "B%")
.execute();
final List<ContactMemberDto> contacts =
+28 -2
View File
@@ -9,6 +9,7 @@ import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tests.model.basic.Customer;
import org.tests.model.basic.ResetBasicData;
import java.util.Arrays;
@@ -113,6 +114,31 @@ public class DtoQueryTest extends BaseTestCase {
assertThat(empty).isNull();
}
@Test
public void setParameter() {
ResetBasicData.reset();
final List<DCust> list =
server().findDto(DCust.class, "select id, name from o_customer where id > ? and name like ? and status = ?")
.setParameter(0)
.setParameter("Rob%")
.setParameter(Customer.Status.NEW)
.findList();
assertThat(list).isNotEmpty();
}
@Test
public void setParameters() {
ResetBasicData.reset();
final List<DCust> list =
server().findDto(DCust.class, "select id, name from o_customer where id > ? and name like ? and status = ?")
.setParameters(0, "Rob%", Customer.Status.NEW)
.findList();
assertThat(list).isNotEmpty();
}
@ForPlatform(Platform.POSTGRES)
@Test
@@ -123,7 +149,7 @@ public class DtoQueryTest extends BaseTestCase {
List<Integer> ids = Arrays.asList(1, 2);
List<DCust> list = server().findDto(DCust.class, "select id, name from o_customer where id = any(?)")
.setParameter(1, ids)
.setParameter(ids)
.findList();
assertThat(list).isNotEmpty();
@@ -149,7 +175,7 @@ public class DtoQueryTest extends BaseTestCase {
assertThat(list).isNotEmpty();
list = server().createSqlQuery("select id, name from o_customer where id in (:idList)")
list = server().sqlQuery("select id, name from o_customer where id in (:idList)")
.setParameter("idList", ids)
.findList();
@@ -201,7 +201,7 @@ public class NamedDtoQueryTest extends BaseTestCase {
ResetBasicData.reset();
List<DCust3> robs = server().createNamedDtoQuery(DCust3.class, "findByNameLike")
.setParameter(1, "Rob")
.setParameter("Rob")
.setMaxRows(10)
.findList();
@@ -2,31 +2,35 @@ package org.tests.basic;
import io.ebean.BaseTestCase;
import io.ebean.BeanState;
import io.ebean.Ebean;
import org.junit.Assert;
import io.ebean.DB;
import org.junit.Test;
import org.tests.model.basic.Customer;
import org.tests.model.basic.ResetBasicData;
import java.sql.Types;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
public class TestTransient extends BaseTestCase {
@Test
public void testTransient() {
ResetBasicData.reset();
Customer cnew = new Customer();
cnew.setName("testTrans");
Ebean.save(cnew);
DB.save(cnew);
Integer custId = cnew.getId();
Customer c = Ebean.find(Customer.class).setAutoTune(false).setId(custId).findOne();
Customer c = DB.find(Customer.class).setId(custId).findOne();
Assert.assertNotNull(c);
assertNotNull(c);
BeanState beanState = Ebean.getBeanState(c);
Assert.assertFalse("not new or dirty as transient", beanState.isNewOrDirty());
BeanState beanState = DB.getBeanState(c);
assertFalse("not new or dirty as transient", beanState.isNewOrDirty());
c.getLock().tryLock();
try {
@@ -36,33 +40,59 @@ public class TestTransient extends BaseTestCase {
}
Boolean selected = c.getSelected();
Assert.assertNotNull(selected);
assertNotNull(selected);
Assert.assertFalse("not new or dirty as transient", beanState.isNewOrDirty());
assertFalse("not new or dirty as transient", beanState.isNewOrDirty());
Ebean.save(c);
DB.save(c);
selected = c.getSelected();
Assert.assertNotNull(selected);
assertNotNull(selected);
c.setName("Modified");
Assert.assertTrue("dirty now", beanState.isNewOrDirty());
assertTrue("dirty now", beanState.isNewOrDirty());
selected = c.getSelected();
Assert.assertNotNull(selected);
assertNotNull(selected);
Ebean.save(c);
Assert.assertFalse("Not dirty after save", beanState.isNewOrDirty());
DB.save(c);
assertFalse("Not dirty after save", beanState.isNewOrDirty());
selected = c.getSelected();
Assert.assertNotNull(selected);
assertNotNull(selected);
String updateStmt = "update customer set name = 'testTrans2' where id = :id";
int rows = Ebean.createUpdate(Customer.class, updateStmt).set("id", custId).execute();
String updateStmt = "update customer set smallnote = 'testTrans2' where id = :id";
int rows = DB.createUpdate(Customer.class, updateStmt)
.setParameter("id", custId).execute();
assertEquals(1, rows);
assertEquals("testTrans2", findNote(custId));
Assert.assertTrue("changed name back", 1 == rows);
rows = DB.createUpdate(Customer.class, "update customer set smallnote = ? where id = ?")
.setNull(1, Types.VARCHAR)
.setParameter(2, custId).execute();
assertEquals(1, rows);
assertNull(findNote(custId));
rows = DB.createUpdate(Customer.class, "update customer set smallnote = ? where id = ?")
.setParameter(1, "Foo")
.setParameter(2, custId).execute();
assertEquals(1, rows);
assertEquals("Foo", findNote(custId));
rows = DB.createUpdate(Customer.class, "update customer set smallnote = :name where id = :id")
.setNullParameter("name", Types.VARCHAR)
.setParameter("id", custId).execute();
assertEquals(1, rows);
assertNull(findNote(custId));
// cleanup
Ebean.delete(Customer.class, custId);
DB.delete(Customer.class, custId);
}
private String findNote(Integer custId) {
return DB.sqlQuery("select smallnote from o_customer where id = ?")
.setParameter(custId)
.findSingleAttribute(String.class);
}
}
@@ -220,7 +220,7 @@ public class TestBatchInsertSimple extends BaseTestCase {
// don't write code like the above but use bind values like:
try (Transaction txn = DB.beginTransaction()) {
DB.sqlUpdate("update ut_master set name=? where id=?")
.setParams("DoNotDoThisPlease", 999999999)
.setParameters("DoNotDoThisPlease", 999999999)
.addBatch();
txn.commit();
@@ -77,9 +77,8 @@ public class TestQueryCacheTableDependency extends BaseTestCase {
.findCount();
assertThat(custs).isEqualTo(1);
Ebean.createSqlUpdate("update o_address set line_2=? where line_2=?")
.setNextParameter("St Lucky3")
.setNextParameter("St Lucky2")
DB.sqlUpdate("update o_address set line_2=? where line_2=?")
.setParameters("St Lucky3", "St Lucky2")
.execute();
custs = Ebean.find(Customer.class).setUseQueryCache(true).setReadOnly(true)
@@ -85,7 +85,7 @@ public class TestInheritanceRawSql extends BaseTestCase {
Vehicle veh = Ebean.find(Vehicle.class)
.setRawSql(rawSql)
.setParameter(1, truck.getId())
.setParameter(truck.getId())
.findOne();
assertThat(veh).isNotNull();
@@ -104,7 +104,7 @@ public class TestInheritanceRawSql extends BaseTestCase {
Vehicle veh2 = Ebean.find(Vehicle.class)
.setRawSql(rawSql2)
.setParameter(1, truck.getId())
.setParameter(truck.getId())
.findOne();
assertThat(veh2).isNotNull();
@@ -47,7 +47,7 @@ public class CustomerFinder extends Finder<Integer, Customer> {
public List<String> namesStartingWith(String name) {
return nativeSql("select name from o_customer where name like ? order by name")
.setParameter(1, name+"%")
.setParameter(name + "%")
.findSingleAttributeList();
}
@@ -22,7 +22,7 @@ public class OptimisticLockExceptionThrowingDao {
inMethodTransaction = server.currentTransaction();
Transaction t = server.createTransaction();
SqlUpdate u = server.createSqlUpdate("update e_basicver set last_update = last_update+1 where id = ?");
SqlUpdate u = server.sqlUpdate("update e_basicver set last_update = last_update+1 where id = ?");
u.setParameter(1, v.getId());
int count = server.execute(u, t);
Assert.assertEquals(1, count);
@@ -49,7 +49,7 @@ public class TestOneToManyJoinTableNoTableName extends BaseTestCase {
}
int intersectionRows = DB.sqlQuery("select count(*) as total from mkeygroup_monkey where mkeygroup_pid = ?")
.setParameter(1, troop.getPid())
.setParameter(troop.getPid())
.findOne()
.getInteger("total");
@@ -1,8 +1,8 @@
package org.tests.persistencecontext;
import io.ebean.BaseTestCase;
import io.ebean.DB;
import io.ebean.Ebean;
import io.ebean.SqlUpdate;
import org.junit.Test;
import org.tests.model.basic.EBasicVer;
@@ -27,10 +27,11 @@ public class TestPersistenceContextQueryScope extends BaseTestCase {
EBasicVer bean1 = Ebean.find(EBasicVer.class, bean.getId());
// do an update of the name in the DB
SqlUpdate sqlUpdate = Ebean.createSqlUpdate("update e_basicver set name=? where id=?");
sqlUpdate.setNextParameter("second");
sqlUpdate.setNextParameter(bean.getId());
int rowCount = sqlUpdate.execute();
int rowCount = DB.sqlUpdate("update e_basicver set name=? where id=?")
.setParameter("second")
.setParameter(bean.getId())
.execute();
assertEquals(1, rowCount);
// fetch the bean again... but doesn't hit DB as it
@@ -46,7 +46,7 @@ public class TestQueryFindNative extends BaseTestCase {
int rowCount = server()
.findNative(Contact.class, sql)
.setParameter(1, "J%")
.setParameter("J%")
.findCount();
List<Integer> nativeIds =
@@ -72,7 +72,7 @@ public class TestQueryFindNative extends BaseTestCase {
PagedList<Contact> pagedList = server()
.findNative(Contact.class, sql)
.setParameter(1, "J%")
.setParameter("J%")
.setMaxRows(100)
.findPagedList();
@@ -99,7 +99,7 @@ public class TestQueryFindNative extends BaseTestCase {
PagedList<Contact> pagedList = server()
.findNative(Contact.class, sql)
.setParameter(1, 100)
.setParameter(100)
.setMaxRows(100)
.findPagedList();
@@ -159,7 +159,7 @@ public class TestQueryFindNative extends BaseTestCase {
List<Contact> contacts =
server()
.findNative(Contact.class, sql)
.setParameter(1, "Rob")
.setParameter("Rob")
.findList();
@@ -206,8 +206,8 @@ public class TestQueryFindNative extends BaseTestCase {
LoggedSqlCollector.start();
List<Customer> result = DB.findNative(Customer.class, sql)
.setParameter(1, LocalDate.now())
.setParameter(2, LocalDate.now())
.setParameter(LocalDate.now())
.setParameter(LocalDate.now())
.setFirstRow(1)
.setMaxRows(10)
.findList();
@@ -33,7 +33,7 @@ public class SqlQueryTests extends BaseTestCase {
String sql = "select (unit_price * order_qty) from o_order_detail where unit_price > ? order by (unit_price * order_qty) desc";
List<BigDecimal> lineAmounts = DB.sqlQuery(sql)
.setParameter(1, 3)
.setParameter(3)
.findSingleAttributeList(BigDecimal.class);
assertThat(lineAmounts).isNotEmpty();
@@ -61,7 +61,7 @@ public class SqlQueryTests extends BaseTestCase {
String sql = "select max(unit_price) from o_order_detail where order_qty > ?";
BigDecimal maxPrice = DB.sqlQuery(sql)
.setParameter(1, 2)
.setParameter(2)
.findSingleAttribute(BigDecimal.class);
assertThat(maxPrice).isNotNull();
@@ -146,7 +146,7 @@ public class SqlQueryTests extends BaseTestCase {
String sql = "select id, name, status from o_customer where name = ?";
CustDto rob = DB.sqlQuery(sql)
.setParameter(1, "Rob")
.setParameter("Rob")
.findOne(CUST_MAPPER);
assertThat(rob.name).isEqualTo("Rob");
@@ -195,7 +195,7 @@ public class SqlQueryTests extends BaseTestCase {
String sql = "select max(id) from o_customer where name != ?";
long maxId = DB.sqlQuery(sql)
.setParameter(1, "Rob")
.setParameter("Rob")
.findOne((resultSet, rowNum) -> resultSet.getLong(1));
assertThat(maxId).isGreaterThan(0);
@@ -26,19 +26,19 @@ public class TestInsertSqlLogging extends BaseTestCase {
txn.setBatchMode(true);
txn.setBatchSize(2);
insert.setNextParameter(10000);
insert.setNextParameter("hello");
insert.setNextParameter("rob");
insert.setParameter(10000);
insert.setParameter("hello");
insert.setParameter("rob");
insert.execute();
insert.setNextParameter(10001);
insert.setNextParameter("goodbye");
insert.setNextParameter("rob");
insert.setParameter(10001);
insert.setParameter("goodbye");
insert.setParameter("rob");
insert.execute();
insert.setNextParameter(10002);
insert.setNextParameter("chow");
insert.setNextParameter("bob");
insert.setParameter(10002);
insert.setParameter("chow");
insert.setParameter("bob");
insert.execute();
txn.commit();
@@ -55,19 +55,19 @@ public class TestInsertSqlLogging extends BaseTestCase {
try (Transaction txn = Ebean.beginTransaction()) {
insert.setNextParameter(10000);
insert.setNextParameter("hello");
insert.setNextParameter("rob");
insert.setParameter(10000);
insert.setParameter("hello");
insert.setParameter("rob");
insert.addBatch();
insert.setNextParameter(10001);
insert.setNextParameter("goodbye");
insert.setNextParameter("rob");
insert.setParameter(10001);
insert.setParameter("goodbye");
insert.setParameter("rob");
insert.addBatch();
insert.setNextParameter(10002);
insert.setNextParameter("chow");
insert.setNextParameter("bob");
insert.setParameter(10002);
insert.setParameter("chow");
insert.setParameter("bob");
insert.addBatch();
int[] rows = insert.executeBatch();
@@ -127,7 +127,7 @@ public class TestNativeSqlBasic extends BaseTestCase {
String nativeSql = "select id, name from o_customer where id > ?";
List<Customer> customers = Ebean.findNative(Customer.class, nativeSql)
.setParameter(1, 1)
.setParameter(1)
.findList();
for (Customer customer : customers) {
@@ -191,7 +191,7 @@ public class TestNativeSqlBasic extends BaseTestCase {
String nativeSql = "select * from o_customer where id > ?";
List<Customer> customers =
Ebean.findNative(Customer.class, nativeSql)
.setParameter(1, 1)
.setParameter(1)
.fetchQuery("contacts")
.findList();
@@ -31,7 +31,7 @@ public class TestNativeWithEmbedded extends BaseTestCase {
LoggedSqlCollector.start();
Query<EPerson> query = Ebean.findNative(EPerson.class, sql);
query.setParameter(1, person.getId());
query.setParameter(person.getId());
EPerson one = query.findOne();
assertThat(one.getName()).isEqualTo("Frank");
@@ -23,7 +23,7 @@ public class CustomerRepository extends BeanRepository<Integer, Customer> {
public Customer findMatchName(String matchName) {
return nativeSql("select id, name from o_customer where name = ?")
.setParameter(1, matchName)
.setParameter(matchName)
.findOne();
}
@@ -94,7 +94,7 @@ public class TestSoftDeleteBasic extends BaseTestCase {
Ebean.delete(bean);
SqlQuery sqlQuery = DB.sqlQuery("select * from ebasic_soft_delete where id=?");
sqlQuery.setParameter(1, bean.getId());
sqlQuery.setParameter(bean.getId());
SqlRow sqlRow = sqlQuery.findOne();
assertThat(sqlRow).isNotNull();
@@ -46,7 +46,7 @@ public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
assertEquals("delete from o_customer where id in (?,?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate = Ebean.createSqlUpdate("delete from o_customer where id in (?1)");
sqlUpdate = DB.sqlUpdate("delete from o_customer where id in (?1)");
sqlUpdate.setParameter(1, asList(9991, 9993));
sqlUpdate.execute();
@@ -77,8 +77,8 @@ public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
@Test
public void positionParamsExpansion_withPrePost_usingParam() {
SqlUpdate sqlUpdate = Ebean.createSqlUpdate("delete from o_customer where id > ? and id in (?2) and id < ?");
sqlUpdate.setParams(90, asList(9991, 9992, 9993), 91);
SqlUpdate sqlUpdate = DB.sqlUpdate("delete from o_customer where id > ? and id in (?2) and id < ?");
sqlUpdate.setParameters(90, asList(9991, 9992, 9993), 91);
sqlUpdate.execute();
assertEquals("delete from o_customer where id > ? and id in (?,?,?) and id < ?", sqlUpdate.getGeneratedSql());
@@ -104,13 +104,13 @@ public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
try (Transaction transaction = DB.beginTransaction()) {
transaction.setBatchMode(true);
upd.setParams(asList(9991), asList("Foo"), asList(9994));
upd.setParameters(asList(9991), asList("Foo"), asList(9994));
upd.execute();
upd.setParams(asList(9991, 9992), asList("Foo", "Bar"), asList(1,2,3,4));
upd.setParameters(asList(9991, 9992), asList("Foo", "Bar"), asList(1,2,3,4));
upd.execute();
upd.setParams(asList(9991), asList("Foo", "Bar", "Baz"), asList(1,2));
upd.setParameters(asList(9991), asList("Foo", "Bar", "Baz"), asList(1,2));
upd.execute();
transaction.commit();
@@ -137,13 +137,13 @@ public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
try (Transaction transaction = DB.beginTransaction()) {
transaction.setBatchMode(true);
upd.setParams(asList(9991, 9992, 9993), "Foo");
upd.setParameters(asList(9991, 9992, 9993), "Foo");
upd.execute();
upd.setParams(asList(9991, 9992), "Bar");
upd.setParameters(asList(9991, 9992), "Bar");
upd.execute();
upd.setParams(asList(9991, 9992, 9999), "Baz");
upd.setParameters(asList(9991, 9992, 9999), "Baz");
upd.execute();
transaction.commit();
@@ -158,13 +158,13 @@ public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
try (Transaction transaction = DB.beginTransaction()) {
transaction.setBatchMode(true);
upd.setParams(asList(9991, 9992, 9993), "Foo");
upd.setParameters(asList(9991, 9992, 9993), "Foo");
upd.addBatch();
upd.setParams(asList(9991, 9992), "Bar");
upd.setParameters(asList(9991, 9992), "Bar");
upd.addBatch();
upd.setParams(asList(9991, 9992, 9999), "Baz");
upd.setParameters(asList(9991, 9992, 9999), "Baz");
upd.addBatch();
transaction.commit();
@@ -183,7 +183,7 @@ public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?,?) and name in (?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate.setParams(asList(9991, 9992), asList("rob", "jim", "sd"));
sqlUpdate.setParameters(asList(9991, 9992), asList("rob", "jim", "sd"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?) and name in (?,?,?)", sqlUpdate.getGeneratedSql());
@@ -192,12 +192,12 @@ public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?) and name in (?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate.setParams(asList(9991), asList("rob", "jim"));
sqlUpdate.setParameters(asList(9991), asList("rob", "jim"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?) and name in (?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate.setParams(asList(9992), asList("ro3b", "j3im"));
sqlUpdate.setParameters(asList(9992), asList("ro3b", "j3im"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?) and name in (?,?)", sqlUpdate.getGeneratedSql());
@@ -223,7 +223,7 @@ public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?,?) and name in (?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate.setParams(asList(9991, 9992), asList("rob", "jim", "sd"));
sqlUpdate.setParameters(asList(9991, 9992), asList("rob", "jim", "sd"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?) and name in (?,?,?)", sqlUpdate.getGeneratedSql());
@@ -232,12 +232,12 @@ public class TestSqlUpdateBindMultipleLists extends BaseTestCase {
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?,?) and name in (?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate.setParams(asList(9991), asList("rob", "jim"));
sqlUpdate.setParameters(asList(9991), asList("rob", "jim"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?) and name in (?,?)", sqlUpdate.getGeneratedSql());
sqlUpdate.setParams(asList(9992), asList("ro3b", "j3im"));
sqlUpdate.setParameters(asList(9992), asList("ro3b", "j3im"));
sqlUpdate.execute();
assertEquals("delete from o_customer where id in (?) and name in (?,?)", sqlUpdate.getGeneratedSql());
@@ -21,12 +21,12 @@ public class TestSqlUpdateExceptions extends BaseTestCase {
UUID id = UUID.randomUUID();
Ebean.createSqlUpdate(sql)
.setParams(id, "hi", 1)
DB.sqlUpdate(sql)
.setParameters(id, "hi", 1)
.executeNow();
UUID foundId = DB.sqlQuery("select id from uuone where id = ?")
.setParams(id)
.setParameters(id)
.findSingleAttribute(UUID.class);
assertThat(foundId).isEqualTo(id);
@@ -1,6 +1,7 @@
package org.tests.update;
import io.ebean.BaseTestCase;
import io.ebean.DB;
import io.ebean.Ebean;
import io.ebean.SqlUpdate;
import io.ebean.annotation.ForPlatform;
@@ -19,10 +20,10 @@ public class TestSqlUpdateUpsert extends BaseTestCase {
String email = "baz@one.com";
Object key = Ebean.createSqlUpdate(sql)
Object key = DB.sqlUpdate(sql)
.setGetGeneratedKeys(true)
.setParameter(1, email)
.setParameter(2, true)
.setParameter(email)
.setParameter(true)
.executeGetKey();
EPersonOnline found = Ebean.find(EPersonOnline.class, key);
@@ -58,7 +59,7 @@ public class TestSqlUpdateUpsert extends BaseTestCase {
String email = "foo@one.com";
Object key = Ebean.createSqlUpdate(sql)
Object key = DB.sqlUpdate(sql)
.setGetGeneratedKeys(true)
.setParameter(1, email)
.setParameter(2, true)
@@ -72,7 +73,7 @@ public class TestSqlUpdateUpsert extends BaseTestCase {
String sqlNamed = "insert into e_person_online (email, online_status, when_updated) values (:email, :online, now()) on conflict (email) do update set when_updated=now(), online_status = :online";
SqlUpdate sqlUpdate2 = Ebean.createSqlUpdate(sqlNamed)
SqlUpdate sqlUpdate2 = DB.sqlUpdate(sqlNamed)
.setGetGeneratedKeys(true)
.setParameter("email", email)
.setParameter("online", false);
@@ -1,8 +1,8 @@
package org.tests.update;
import io.ebean.BaseTestCase;
import io.ebean.DB;
import io.ebean.Ebean;
import io.ebean.SqlQuery;
import io.ebean.SqlRow;
import org.junit.Test;
import org.tests.model.basic.Customer;
@@ -52,9 +52,9 @@ public class TestUpdatePartial extends BaseTestCase {
}
private void checkDbStatusValue(Integer custId, String dbStatus) {
SqlQuery sqlQuery = Ebean.createSqlQuery("select id, status from o_customer where id = ?");
sqlQuery.setParameter(1, custId);
SqlRow sqlRow = sqlQuery.findOne();
SqlRow sqlRow = DB.sqlQuery("select id, status from o_customer where id = ?")
.setParameter(custId)
.findOne();
String status = sqlRow.getString("status");
assertEquals(dbStatus, status);
}
+2 -2
View File
@@ -79,8 +79,8 @@
<logger name="io.ebean.docker" level="TRACE"/>
<!-- <logger name="io.ebean.DDL" level="DEBUG"/>-->
<!-- <logger name="io.ebean.SQL" level="TRACE"/>-->
<!-- <logger name="io.ebean.TXN" level="TRACE"/>-->
<logger name="io.ebean.SQL" level="TRACE"/>
<logger name="io.ebean.TXN" level="TRACE"/>
<!-- <logger name="io.ebean.SUM" level="TRACE"/>-->
<!-- <logger name="io.ebean.cache" level="TRACE"/>-->