我正在使用getNamedParameterJdbcTemplate()来查询数据库。
我是否有更好的方法可以在查询中映射表单字段,如果在表单字段中输入的值应包含在where条件中,否则不包括条件?
目前正在使用:
getNamedParameterJdbcTemplate()。query(QUERY_TEST,namedParams,valueObjectMapper);
答案 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
是根据表单中的值创建的实例。
希望有所帮助。