我真正想要的是在JOOQ中编写以下查询:
stmt = connection.prepareStatement(
"INSERT INTO `tbl` (`name`, `service_id`, `device_id`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `id` = LAST_INSERT_ID(`id`)",
Statement.RETURN_GENERATED_KEYS
);
我无法在JOOQ中找到一种方法。有可能吗?
答案 0 :(得分:5)
目前(截至jOOQ 3.4-3.6),由于jOOQ INSERT
API的缺陷,这是不可能的:
答案 1 :(得分:0)
这可能会对你有所帮助。暂时我正在使用它:
Field<Integer> LAST_INSERT_ID = DSL.function("LAST_INSERT_ID", Integer.class, PACKAGE.ID);
dsl.insertInto(PACKAGE)
.set(dsl.newRecord(PACKAGE, packagePojo))
.onDuplicateKeyUpdate()
.set(PACKAGE.ID, LAST_INSERT_ID)
.set(PACKAGE.PTR_JOB, packagePojo.getPtrJob())
.set(PACKAGE.PACK_NUMBER, packagePojo.getPackNumber())
.set(PACKAGE.RACK, packagePojo.getRack()