目前在探索 JOOQ 的可能性,想谨慎入手,只使用 JOOQ 作为 SQL builder。我将我的数据库模式定义为派生的类CustomTable以获得类型安全。这导致代码像
Param<Integer> pId = ...
Query query = context.select(sometable.somefield.max())
.from(sometable)
.where(sometable.id.eq(pId)
;
wheresometable是一个保存我的表实例之一的变量。
我目前所做的query类似于
PreparedStatement pstmt = connection.prepareStatement(query.getSQL());
pstmt.setObject(1, pId.getValue(), pId.getDataType().getSQLType());
但是一旦语句有更多参数,我就开始对 JOOQ 的setObject第一个参数的实现产生复杂的依赖关系。
我想使用query.getBindValues(),但这仅返回要绑定到语句的普通 Java 对象。我必须假设订单与仓位订单相匹配setObject,此外我现在错过了getSQLType(). 所以这也不是什么好办法。
然后我希望找到类似的东西query.getPreparedStatement(connection),从提供的连接中创建语句,并很好地填写所有参数,但这似乎不存在。
有什么巧妙的方法可以摆脱我缺少PreparedStatement的 JOOQ吗?Query