私のプロジェクトでは、Spring 3.0 JdbcTemplate を使用して DAO クラスを実装しています。query(...)、update(...) などの便利なメソッドを提供します。これらのメソッドは、クエリにバインドする引数としてオブジェクトを受け入れます。javadoc では、対応する SQL タイプを推測するのは PreparedStatement に任されていると述べられています。したがって、プリミティブまたはラッパーを使用する場合は簡単です。
しかし、私のコードでは、id 表現に特別なクラスを使用しています。たとえば、UserId です。整数値を取得するパブリック メソッド getInt() があります。今、私は使用する必要があります
userId.getInt()
UserId のインスタンスを JdbcTemplate クエリに渡す必要があるたびに。忘れて書いたら
userId
UserId オブジェクトは準備されたステートメントで使用できないため、明らかに SQLException が発生します ( Object 型を対応する SQL 型にマップするルールは次のとおりです)。しかし、このタイプのエラーはコンパイル中に見つけることができず (JdbcTemplate は Object をパラメーターとして受け入れるため)、バグの導入が容易になります。
.getInt() の呼び出しを回避し、 UserId オブジェクトをクエリに渡すだけの方法はありますか?