很多地方要用到动态查询以及模糊查询
效果截图(类似于开源中国人才汇职位查找):
1、使用Criteria动态查询是很方便的,示例:
@Override
public List listJobInfoByMultiConditionAction(final String jobInfoClass,
final String jobInfoProvince, final String jobInfoCity, final String jobInfoPay) {
// TODO Auto-generated method stub
//使用Criteria动态查询
try{
return (List) getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session s) throws HibernateException, SQLException{
Criteria criteria = s.createCriteria(JobInfo.class);
if (!jobInfoClass.equals("选择职位类别")) {
criteria.add(Restrictions.eq("jobinfoCalss",
jobInfoClass));
}
if (!jobInfoProvince.equals("请选择")) {
criteria.add(Restrictions.eq("jobinfoProvince",
jobInfoProvince));
}
if (!jobInfoCity.equals("请选择")) {
criteria.add(Restrictions.eq("jobinfoCity",
jobInfoCity));
}
if (!jobInfoPay.equals("请选择月薪范围")) {
criteria.add(Restrictions.eq("jobinfoPay",
jobInfoPay));
}
return criteria.list();
}
});
}catch (RuntimeException re){throw re;}
//return null;
}
2、模糊查询,使用单一关键字实现多字段查找
@Override
public List listJobInfoByKeyword(String keyword) {
// TODO Auto-generated method stub
try{
//根据关键字查找
return getHibernateTemplate().find("from JobInfo as j where j.jobinfoProvince like ? or j.jobinfoCity like ? or j.jobinfoCalss like ? or j.jobinfoCompany like ?", new Object[]{"%"+keyword+"%","%"+keyword+"%","%"+keyword+"%","%"+keyword+"%"});
//return null;
}