gpt4 book ai didi

java - JOOQ 更新集未填充值

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:11 24 4
gpt4 key购买 nike

在 Spring Boot 应用程序中,我使用 JOOQ 构建 SQL,然后通过 JdbcTemplate 执行该 SQL。我没有使用 codegen 或使用 JOOQ 执行查询。我遇到的问题是进行更新。我使用 table()field() 作为来自 org.jooq.impl.DSL 的静态导入。该表在类的顶部声明如下:

private final Table<Record> TABLE = table("rjri.participant");

这是我用来更新的对象的字符串表示形式:

Participant{id='10',{ firstName='Jacob', lastName='Nerney', dateOfBirth='1985-01-14T20:51:39', address='1662 Ryan Ave', city='Murray', state='KY', zip='420711234', phoneNumber='2702274322', email='nern@mail.com'}}

这是我用来构建更新语句的 JOOQ 代码:

final String sql = dslContext.update(TABLE)
.set(field("first_name"), participant.getFirstName())
.set(field("last_name"), participant.getLastName())
.set(field("date_of_birth"),
DateTimeFormatter.toDateTimeString(participant.getDateOfBirth()))
.set(field("address"), participant.getAddress())
.set(field("city"), participant.getCity())
.set(field("state"), participant.getState()).set(field("zip"), participant.getZip())
.set(field("phone"), participant.getPhoneNumber())
.set(field("email"), participant.getEmail())
.set(field("modified_date"),
DateTimeFormatter.toDateTimeString(LocalDateTime.now()))
.where("id = " + participant.getId()).getSQL();

但是,当我运行这段代码时,生成的 SQL 是这样的:

update rjri.participant set first_name = ?, last_name = ?, date_of_birth = ?, address = ?, city = ?, state = ?, zip = ?, phone = ?, email = ?, modified_date = ? where (id = 10)

我无法弄清楚为什么没有填充这些值。救救我吧!

最佳答案

您可以使用Query.getSQL(ParamType)强制 jOOQ 内联所有绑定(bind)变量的方法。但很可能,出于性能原因,您最好使用准备好的语句,在这种情况下,您应该使用 Query.getSQL() 提取 SQL 字符串。以及使用 Query.getBindValues() 的绑定(bind)变量.

关于java - JOOQ 更新集未填充值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53717275/

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