我正在编写一个将记录插入或更新到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);
}
});
}
但我不知道如何通过记录的唯一键来选择,而不考虑确切的字段名称或字段编号。所以我的问题是:
提前感谢您的帮助!
答案 0 :(得分:0)
您可以通过Table.getPrimaryKey()
获取对PrimaryKey
元信息的引用:
UniqueKey<R> key = table.getPrimaryKey();
if (key != null) {
List<TableField<R, ?>> fields = key.getFields();
// Now create your condition from these fields
}