現在、JOOQ の可能性を探っていますが、慎重に開始し、SQL ビルダーとしてのみ JOOQ を使用したいと考えています。CustomTable
型の安全性を確保するために、データベース スキーマをから派生したクラスとして定義しました。これは次のようなコードにつながります
Param<Integer> pId = ...
Query query = context.select(sometable.somefield.max())
.from(sometable)
.where(sometable.id.eq(pId)
;
wheresometable
は、テーブル インスタンスの 1 つを保持する変数です。
私が現在行っていることは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