JOOQ动态设置

时间:2017-03-21 09:29:47

标签: java sql jooq

我想只更新已更新的字段(它们不会为null)。 我想创建一个动态集,例如(不是有效的代码):

dslContext.update(table)
            if(field1 != null) {
              .set(field1, val1)
            }
            if(field2 != null) {
              .set(field2, val2)
            }
            .where(condition1)
            .and(condition2)
            .execute();

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

虽然您可以通过(ab)使用DSL API实现这一点,但实际执行此操作的最佳方法是使用以下方法之一:

使用Record的示例:

Record record = dslContext.newRecord(table);

if (field1 != null)
    record.set(field1, val1)

if (field2 != null) {
    record.set(field2, val2)

dslContext.update(table)
          .set(record)
          .where(condition1)
          .and(condition2)
          .execute();