Java 如何使用JOOQ检查WHERE子句条件是否有效?
假设我们有一个SQL片段,如下所示:Java 如何使用JOOQ检查WHERE子句条件是否有效?,java,sql,parsing,jooq,Java,Sql,Parsing,Jooq,假设我们有一个SQL片段,如下所示: String condition = "field_name > 10 asd field_name1 <= 20" 有没有一种方法可以使用JOOQ验证条件语法?此外,与addLimit不同的是,这些值没有替换为?,为什么 下面的行不应该抛出错误而不是接受它吗 query.addConditions(DSL.condition(condition)); 为什么要这样做?是的一部分,它允许您将任何SQL字符串片段传递给所需的jOOQ查询元素,包
String condition = "field_name > 10 asd field_name1 <= 20"
有没有一种方法可以使用JOOQ验证条件语法?此外,与addLimit不同的是,这些值没有替换为?,为什么
下面的行不应该抛出错误而不是接受它吗
query.addConditions(DSL.condition(condition));
为什么要这样做?是的一部分,它允许您将任何SQL字符串片段传递给所需的jOOQ查询元素,包括:
- 简单SQL片段
- 复杂的、特定于供应商的表达式
- 语法错误,如果您愿意的话
asd
操作员
有没有一种方法可以使用JOOQ验证条件语法
JOOQ3.9中有一个实验版本,可通过以下途径获得。它允许您解析SQL字符串并从中构造表达式树。实际上,在这种情况下,asd
将是一个无法识别的令牌,并将引发异常
您可以这样使用它:
Condition condition =
ctx.parser().parseCondition("field_name > 10 asd field_name1 <= 20");
条件=
parser().parseCondition(“字段名称>10 asd字段名称1?asd字段名称1{0}asd字段名称1
Condition condition = DSL.condition("field_name > ? asd field_name1 <= ?", 10, 20);
Condition condition =
DSL.condition("field_name > {0} asd field_name1 <= {1}", val(10), val(20));