gpt4 book ai didi

java - 如何使用 jOOQ 的动态查询实现按字段值排序

转载 作者:行者123 更新时间:2023-11-29 01:28:26 25 4
gpt4 key购买 nike

我正在尝试在 jOOQ 中转换这样的东西:

select foo from bar
order by field(foo, 'value1', 'something-else', 'value3')

在选择查询上,例如:

SelectQuery<Record> query = ...
query.addSelect(BAR.FOO);
query.addFrom(BAR);
query.addOrderBy( ... ? ... )

如何添加最后一位?


背景

我想要完成的基本上在这里描述:MySQL - ORDER BY values within IN() .在我的例子中,我有一个通用的批加载函数,它使用“where field in(..)”,我想保留顺序。这在我使用纯 SQL 时需要它时有效,但我需要将此位添加到使用 jOOQ 的动态构造的查询中。

最佳答案

每当您达到 jOOQ 的极限时,求助于 plain SQL .您可以像这样编写自己的字段函数:

class MyDSL {

public static Field<Integer> field(Field<String> search, String in1) {
return field(search, DSL.val(in1));
}

public static Field<Integer> field(Field<String> search, Field<String> in1) {
return DSL.field("field({0}, {1})", Integer.class, search, in1);
}

public static Field<Integer> field(Field<String> search,
String in1,
String in2) {
return field(search, val(in1), val(in2));
}

public static Field<Integer> field(Field<String> search,
Field<String> in1,
Field<String> in2) {
return DSL.field("field({0}, {1}, {2})", Integer.class, search, in1, in2);
}

// ... or, support a varargs function variant, too
}

现在在你所有的语句中使用它:

query.addOrderBy( MyDSL.field(BAR.FOO, "value1", "something-else", "value3") );

关于java - 如何使用 jOOQ 的动态查询实现按字段值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28508176/

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