私は既存のプロジェクトを jdbc から jdbi に移行しており、jdbi の美しい SQL オブジェクト API を大いに活用しています。私たちはmysqlを使用しています。
SQL オブジェクト API は、コンパイル時に認識される処理済みクエリを構築できますが、実行時にクエリを生成する方法を見つけることができませんでした。
具体的には、次のようなことができるようになりたいです。
@SqlUpdate(
"UPDATE record SET "+
@IfNotZero("foo") "foo=:foo" +
@IfNotNull("bar") "bar=:bar" +
@IfNotNull("baz") "baz=:baz" +
"WHERE id=:id"
)
public abstract int updateRecord(
@Bind("id") int id,
@Bind("foo") int foo,
@Bind("bar") String bar,
@Bind("baz") String baz
);