我正在尝试使用jOOQ在一些通用代码中构建SQL查询.我对使用jOOQ执行这些查询或检查结果不感兴趣.此外,此代码是通用的,所以我不能使用jOOQ的代码生成.
我已经设法弄清楚这一点:
List<org.jooq.Field<?>> fields = new ArrayList<org.jooq.Field<?>>();
Field<?> field = Factory.field("somefield");
fields.add(field);
field = Factory.field("someotherfield");
fields.add(field);
Field<Object> fieldPK = Factory.field("somePKField");
Condition condition = fieldPK.equal(123);
Factory factory = new Factory(connection, SQLDialect.POSTGRES);
SelectFinalStep step = factory.select(fields).from("sometable").where(condition);
String query = step.getQuery().getSQL(true);
Run Code Online (Sandbox Code Playgroud)
但是Factory.field()和from()采用通用SQL而不是实际的表或字段名称,因此没有引用(即使使用RenderNameStyle.QUOTED)并且没有针对SQL注入的保护.
有没有办法创建一个知道他们名字是什么的字段或表?理想情况下,我可以通过其名称和父表指定一个字段,jOOQ为我构建"sometable"."somefield"字符串.