gpt4 book ai didi

java - 如何使用 jooq 编写具有多个字段的条件

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

我想用 JOOQ 编写如下条件

AND (id,name) IN (('id1','name1'),('id2','name2'),...)

我尝试过这种语法

Condition condition= DSL.concat(idField,nameField).in("");

生成

concat(cast(`id` as char), cast(`name` as char)) in ('id1name1',"id2name2",....))

但是这个解决方案会跳过索引,从而导致巨大的性能问题

我不知道如何将这两个字段放在一起

感谢您的帮助

最佳答案

不要使用字符串连接,而实际上您想使用行值表达式谓词!使用 jOOQ 的行值表达式支持,如下所述: http://www.jooq.org/doc/3.0/manual/sql-building/column-expressions/row-value-expressions

或者更具体地说:

// import static org.jooq.impl.DSL.row;
Condition condition = row(ID, NAME).in(row("id1", "name1"), row("id2", "name2"));

由于 Row2.in(Row2...) 中的通用 varargs 参数,您可能需要抑制警告

如果您的目标数据库不支持行值表达式,jOOQ 会将以上内容扩展为该谓词

(ID = 'id1' AND NAME = 'name1') OR (ID = 'id2' AND NAME = 'name2')

关于java - 如何使用 jooq 编写具有多个字段的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788565/

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