#1354 - ENH: Add SqlUpdate setNextParameter() ... as alternative for positioned parameters

This commit is contained in:
Rob Bygrave
2018-03-27 22:58:19 +13:00
parent 4ef581f87c
commit dfa7b765f9
4 changed files with 68 additions and 12 deletions
+37 -1
View File
@@ -30,6 +30,35 @@ package io.ebean;
* String msg = "There were " + modifiedCount + " rows updated";
*
* }</pre>
* <p>
* <h3>Example: Using setNextParameter()</h3>
* <pre>{@code
*
* String sql = "insert into audit_log (id, description, modified_description) values (?,?,?)";
* SqlUpdate insert = Ebean.createSqlUpdate(sql);
*
* try (Transaction txn = Ebean.beginTransaction()) {
* txn.setBatchMode(true);
*
* insert.setNextParameter(10000);
* insert.setNextParameter("hello");
* insert.setNextParameter("rob");
* insert.execute();
*
* insert.setNextParameter(10001);
* insert.setNextParameter("goodbye");
* insert.setNextParameter("rob");
* insert.execute();
*
* insert.setNextParameter(10002);
* insert.setNextParameter("chow");
* insert.setNextParameter("bob");
* insert.execute();
*
* txn.commit();
* }
*
* }</pre>
*
* @see Update
* @see SqlQuery
@@ -61,7 +90,7 @@ public interface SqlUpdate {
/**
* Execute and return the generated key. This is effectively a short cut for:
*
* <p>
* <pre>{@code
*
* sqlUpdate.execute();
@@ -137,6 +166,13 @@ public interface SqlUpdate {
*/
SqlUpdate setTimeout(int secs);
/**
* Set the next positioned parameter.
*
* @param value The value to bind
*/
SqlUpdate setNextParameter(Object value);
/**
* Set a parameter via its index position.
*/
@@ -105,6 +105,7 @@ public final class DefaultSqlUpdate implements Serializable, SpiSqlUpdate {
@Override
public int execute() {
addPos = 0;
if (server != null) {
return server.execute(this);
} else {
@@ -182,8 +183,9 @@ public final class DefaultSqlUpdate implements Serializable, SpiSqlUpdate {
return this;
}
public void addParameter(Object value) {
public SqlUpdate setNextParameter(Object value) {
setParameter(++addPos, value);
return this;
}
@Override