有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 1 楼答案

    更新2021,可以使用Jooq的{a1}。

    下面是一个示例,它可能看起来像什么(在Kotlin中):

    fun saveOrUpdate(items: Iterable<SomeClass>) {
        dsl.insertInto(
            TABLE,
            TABLE.FIELD1,
            TABLE.FIELD2,
        ).apply {
            items.forEach { item ->
                values(
                    item.field1,
                    item.field2
                )
                    .onConflict(
                        TABLE.FIELD1
                    )
                    .doUpdate()
                    .set(TABLE.FIELD2, item.field2)
                    .set(TABLE.UPDATED_AT, currentOffsetDateTime())
            }
        }
            .execute()
    }
    
  2. # 2 楼答案

    不,截至jOOQ 3.8,没有此类支持,目前也没有计划添加的支持。不过,您可以使用普通SQL轻松实现这一点:

    public static <T> Field<T> values(Field<T> field) {
        return DSL.field("values({0})", field.getDataType(), field);
    }
    

    有关jOOQ中“普通SQL”的更多信息,请参阅: http://www.jooq.org/doc/latest/manual/sql-building/plain-sql