2

現在、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

4

1 に答える 1