1

getNamedParameterJdbcTemplate() を使用してデータベースを照会しています。

フォーム フィールドに入力された値を where 条件に含める必要がある場合、フォーム フィールドをクエリにマップするより良い方法はありますか?

現在次のように使用しています:

getNamedParameterJdbcTemplate().query(QUERY_TEST, namedParams, valueObjectMapper);

4

1 に答える 1

0

これが可能かどうかはわかりませんが、 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、フォームの値に基づいて作成されたインスタンスです。

それが役立つことを願っています。

于 2012-08-09T14:42:45.760 に答える