目前在探索 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