我使用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
答案 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();