- Type Parameters:
T
- The type of entity bean being updated
public interface UpdateQuery<T>
An update query typically intended to perform a bulk update of many rows that match the query.
Also note that you can also just use a raw SQL update via SqlUpdate
which is pretty light and simple.
This UpdateQuery is more for the cases where we want to build the where expression of the update using the
ExpressionList
"Criteria API" that is used with a normal ORM query.
Example: Simple update
int rows = DB.update(Customer.class)
.set("status", Customer.Status.ACTIVE)
.set("updtime", new Timestamp(System.currentTimeMillis()))
.where()
.gt("id", 1000)
.update();
sql
update o_customer set status=?, updtime=? where id > ?
Note that if the where() clause contains a join then the SQL update changes to use a
WHERE ID IN ()
form.
Example: Update with a JOIN
In this example the expression .eq("billingAddress.country", nz)
requires a join
to the address table.
int rows = DB.update(Customer.class)
.set("status", Customer.Status.ACTIVE)
.set("updtime", new Timestamp(System.currentTimeMillis()))
.where()
.eq("status", Customer.Status.NEW)
.eq("billingAddress.country", nz)
.gt("id", 1000)
.update();
sql
update o_customer set status=?, updtime=?
where id in (
select t0.id c0
from o_customer t0
left join o_address t1 on t1.id = t0.billing_address_id
where t0.status = ?
and t1.country_code = ?
and t0.id > ? )
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionSet the value of a property.Set the label on the update query.Set the property to be null.setProfileLocation
(ProfileLocation profileLocation) Set the profile location of this update query.Set using a property expression that does not need any bind values.Set using a property expression that can contain?
bind value placeholders.int
update()
Execute the update returning the number of rows updated.where()
Return the query expression list to add predicates to.
-
Method Details
-
set
Set the value of a property.int rows = DB.update(Customer.class) .set("status", Customer.Status.ACTIVE) .set("updtime", new Timestamp(System.currentTimeMillis())) .where() .gt("id", 1000) .update();
- Parameters:
property
- The bean property to be setvalue
- The value to set the property to
-
setNull
Set the property to be null.int rows = DB.update(Customer.class) .setNull("notes") .where() .gt("id", 1000) .update();
- Parameters:
property
- The property to be set to null.
-
setRaw
Set using a property expression that does not need any bind values.The property expression typically contains database functions.
int rows = DB.update(Customer.class) .setRaw("status = coalesce(status, 'A')") .where() .gt("id", 1000) .update();
- Parameters:
propertyExpression
- A property expression
-
setRaw
Set using a property expression that can contain?
bind value placeholders.For each
?
in the property expression there should be a matching bind value supplied.int rows = DB.update(Customer.class) .setRaw("status = coalesce(status, ?)", Customer.Status.ACTIVE) .where() .gt("id", 1000) .update();
- Parameters:
propertyExpression
- A raw property expressionvalues
- The values to bind with the property expression
-
setProfileLocation
Set the profile location of this update query. This is used to relate query execution metrics back to a location like a specific line of code. -
setLabel
Set the label on the update query. -
where
ExpressionList<T> where()Return the query expression list to add predicates to. -
update
int update()Execute the update returning the number of rows updated.
-