getNamedParameterJdbcTemplate() を使用してデータベースを照会しています。
フォーム フィールドに入力された値を where 条件に含める必要がある場合、フォーム フィールドをクエリにマップするより良い方法はありますか?
現在次のように使用しています:
getNamedParameterJdbcTemplate().query(QUERY_TEST, namedParams, valueObjectMapper);
これが可能かどうかはわかりませんが、 aNamedParameterJdbcTemplate
を使用する代わりに the を使用できますHibernateTemplate
。次に、 Example Queriesを使用できます。
したがって、基本的には、フォーム フィールドに入力された値に基づいて、検索しているオブジェクトのインスタンスを作成します。(デフォルトでは、値が設定されているフィールドのみが where 句の Hibernate によって考慮されます)
次に、コードはおおよそ次のようになります。
getHibernateTemplate().execute(new HibernateCallback<YourClass>() {
@Override
public List<YourClass> doInHibernate(Session session) throws HibernateException, SQLException {
Criteria yourClassCriteria = session.createCriteria(YourClass.class);
Example exampleCriteria = Example.create(yourClassInstance);
yourClassCriteria.add(exampleCriteria);
return yourClassCriteria.list();
}
});
YourClass
明らかに、実際に検索しているタイプに置き換える必要がありyourClassInstance
、フォームの値に基づいて作成されたインスタンスです。
それが役立つことを願っています。