gpt4 book ai didi

java - jooq mysql select by 唯一键,不考虑字段名

转载 作者:行者123 更新时间:2023-11-30 22:04:25 26 4
gpt4 key购买 nike

我正在编写一个方法,将记录插入或更新到 mysql 表中,并且仅当字段“sample_time”大于表中当前记录的这个值时才会更新。以下是我现在想做的。

 public <R extends Record> void upsertRecord(Table<R> table, R record) {
Connection conn = getConnection();
DSL.using(getConfiguration()).transaction(configuration -> {
try (DSLContext dslContext = DSL.using(configuration)) {

R old = // select with unique keys of table


// something like if (old.get("update_time) < record.get("update_time"))
dslContext.insertInto(table).set(record).onDuplicateKeyUpdate().set(record).execute();
conn.commit();
// }
} catch (SQLException e) {
// TODO
} finally {
closeConnection(conn);
}
});
}

但我不知道如何在不考虑确切的字段名称或字段编号的情况下通过记录的唯一键进行选择。所以我的问题是:

  1. 我如何实现“根据记录的唯一键选择而不考虑确切的字段名称或字段编号”
  2. 否则我怎么能在 jooq 中使用条件重复更新

在此先感谢您的帮助!

最佳答案

您可以通过Table.getPrimaryKey() 获取对PrimaryKey 元信息的引用。 :

UniqueKey<R> key = table.getPrimaryKey();
if (key != null) {
List<TableField<R, ?>> fields = key.getFields();

// Now create your condition from these fields
}

关于java - jooq mysql select by <R extends Record> 唯一键,不考虑字段名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42216950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com