更新查询

UpdateQuery 允许我们通过创建查询来执行批量 SQL 更新,查询可以通过查询 bean创建,也可以作为标准 ORM 查询创建。

asUpdate

使用 asUpdate() 将查询转换为 UpdateQuery,之后我们可以通过 set()setRaw() 设置更新参数。

示例 1
int rows = new QCustomer()
  .name.startsWith("Rob")
  .asUpdate()                      // convert to UpdateQuery
    .set("registered", now)        // update set ...
    .update();
update customer set registered=? where name like ? escape'|'

 

示例 2
int rows = new QCustomer()
  .billingAddress.country.equalTo(nz)
  .billingAddress.city.equalTo("Auckland")
  .name.startsWith("Rob")
  .asUpdate()
    .set("registered", now)
    .setRaw("name = concat(?, name, '+', ?)", "before", "after")
    .update();
update customer set registered=?, name = concat(?, name, '+', ?)
where id in (
  select t0.id from customer t0
  left join address t1 on t1.id = t0.billing_address_id
  where t1.country_code = ?  and t1.city = ?  and t0.name like ? escape'|'
);
--bind(2019-01-18 17:12:01.348,before,after,NZ,Auckland,Rob%) rows:0

比较 SqlUpdate

如果我们想要直接使用 SQL,我们可以使用 SqlUpdate

相关:删除查询 SqlUpdate