NamedParameterJdbcDaoSupport与搜索表单或条件实现

时间:2012-08-09 07:03:53

标签: java spring hibernate

我正在使用getNamedParameterJdbcTemplate()来查询数据库。

我是否有更好的方法可以在查询中映射表单字段,如果在表单字段中输入的值应包含在where条件中,否则不包括条件?

目前正在使用:

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

1 个答案:

答案 0 :(得分:0)

我不知道您是否可以这样做,但您可以使用NamedParameterJdbcTemplate而不是HibernateTemplate。然后你可以使用Example Queries

因此,基本上您将根据在表单字段中输入的值创建要搜索的对象的实例。 (默认情况下,只有那些具有值集的字段由Hibernate考虑用于where子句)

然后你的代码大致如下:

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是根据表单中的值创建的实例。

希望有所帮助。