hql 如何实现多个条件查询自由动态拼接

最近在做多个查询需要自由拼接的时候遇到一些问题,由于项目是ssh,hibernate这种处理在网上比较少,所以记录一下。

下面的select后面为我的model类,where后面则是一下查询条件是否为的判断。

StringBuffer sql = new StringBuffer("select new com.empl.mgr.model.A_User (stuId, stuSchool, stuNumber, stuName, stuTeacher,stuTSchool, isHasAudit, reMarks, level, resourcePath) from A_User where 1=1");
  if (pro!= null && !pro.equals("请选择省份")) {
   sql.append(" and province like '%" + pro+ "%'");
   }
  if (city!= null && !city.equals("请选择城市")) {
   sql.append(" and city like '%" + city+ "%'");
   }
  if (school!= null && !school.equals("")) {
   sql.append(" and stuSchool like '%" + school+ "%'");
   }
  if (people!= null && !people.equals("")) {
   sql.append(" and stuName like '%" + people+ "%'");
   }
  if (stuNumber!= null && !stuNumber.equals("")) {
   sql.append(" and stuNumber like '%" + stuNumber+ "%'");
   }
  if (level!= null && !level.equals("0")) {
   sql.append(" and level like '%" + level+ "%'");
   }
  if (isHasAudit!= null && !isHasAudit.equals("-1")) {
   sql.append(" and isHasAudit like '%" + isHasAudit+ "%'");
   }
  return findSession().createQuery(sql.toString()).list();

你可能感兴趣的:(hibernate)