如何在jooq中编写sql条件

时间:2014-08-29 01:39:53

标签: sql conditional-statements inline where jooq

我使用jooq进行数据库操作。我想编写一个带有自定义原因的select语句。意义条件来自map,我通过在地图中迭代map.data来不时地创建原因。这就是为什么我迭代地图并创建原因

的原因
Map =>{fromDate=>2014-05-10,toDate=>2014-06-10,userId=25,type=>STAFF}

然后创建一个如下所示的原因。

where (fromDate="2014-05-10" and toDate="2014-06-10" and userId=25 and type="STAFF")

所以我可以写一个内联原因。

谢谢 Amila

1 个答案:

答案 0 :(得分:1)

我不是100%确定你的意思是创建一个where子句" inline"。但可能,最好的解决方案是编写这样的实用函数:

public static Condition condition(Map<Field<?>, Object> map) {
    Condition result = DSL.trueCondition();

    for (Entry<Field<?>, Object> entry : map.entrySet()) {
        result = result.and(((Field) entry.getKey()).eq(entry.getValue()));
    }

    return result;
}

然后,您可以&#34;内联&#34;这条件进入你的jOOQ声明:

DSL.using(configuration)
   .select(...)
   .from(...)
   .where(condition(map))
   .fetch();