我正在使用 getNamedParameterJdbcTemplate() 来查询数据库。
有没有更好的方法可以在查询中映射表单字段,如果在表单字段中输入的值应该包含在 where 条件中,否则不包含条件?
目前使用类似:
getNamedParameterJdbcTemplate().query(QUERY_TEST, namedParams, valueObjectMapper);
我不知道这对您是否可行,但NamedParameterJdbcTemplate
您可以使用 theHibernateTemplate
来代替。然后你可以使用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
是根据表单中的值创建的实例。
希望有帮助。