我正在尝试使用 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);
但是 Factory.field() 和 from() 采用通用 SQL 而不是实际的表或字段名称,因此没有引用(即使使用 RenderNameStyle.QUOTED 时)也没有针对 SQL 注入的保护。
有没有办法创建一个知道它们的名字的字段或表?理想情况下,我可以通过名称和父表指定一个字段,jOOQ 为我构建“sometable”。“somefield”字符串。