【发布时间】:2021-06-18 21:47:41
【问题描述】:
我只想在收到的 POJO 中给定值不为空时更新列。
我想实现这个 SQL:
Update TABLE table_name SET column_name = COALESCE(value, column_name)
这是我在 JOOQ 中编写的函数
public int updateCompany(final Company company) {
return dslContext.update(COMPANY)
.set(COMPANY.REGISTERED_NAME, company.getRegisteredName())
.set(COMPANY.TRADING_NAME, coalesce(COMPANY.TRADING_NAME, company.getTradingName()))
.set(COMPANY.ADDRESS_ID, coalesce(COMPANY.ADDRESS_ID, company.getAddressId()))
.where(COMPANY.ID.eq(company.getId()))
.execute();
}
【问题讨论】:
-
保持事务大小,避免事务冲突:
Update TABLE table_name SET column_name = value WHERE value IS NOT NULL