hibernate 多條件組合查詢 之 sql 拼接
阿新 • • 發佈:2019-01-27
public static void main(String[] args) { Session session = null; Transaction tx = null; List list = null; Criteria criteria = null; try { session = HibernateSessionFactory.getSession(); tx = session.beginTransaction(); DetachedCriteria detachedCriteria = DetachedCriteria .forClass(InfoTab.class); String sql=" 1=1 "; Integer pareaId = 0; // 父地區; Integer careaId = 0; // 子地區; Integer categoryId = 0; // 類別; String infoPrivider = "中介"; // 來源; String houseType= "地下室"; // 房屋型別; Integer hxBedRoom=0; // 室; Integer hxLivingRoom=0; // 廳; String hzHouseStatus="有房出租"; // 合租型別; String hzRequestSex="男"; // 性別要求; String fixUp="尚未"; // 裝修程度; Integer lcHeightMolecuse=0; // 樓層; String orientation="東南"; // 朝向要求; Integer buildArea=2000; // 建築面積; Integer useArea=80; // 使用面積; Integer rentalDigit=2000; // 租金/價格; String title= "出租"; // 標題; if(pareaId!=0) { sql+="pareaId=" + pareaId; } if(careaId!=0) { sql+=" and careaId=" + careaId; } if(categoryId!=0) { sql+=" and categoryId=" + categoryId; } if(!infoPrivider.equals("")) { sql+=" and infoPrivider='" + infoPrivider + "'"; } if(!houseType.equals("")) { sql+=" and houseType='" + houseType +"'"; } if(hxBedRoom!=0) { sql+=" and hxBedRoom=" + hxBedRoom; } if(hxLivingRoom!=0) { sql+=" and hxLivingRoom=" + hxLivingRoom; } if(!hzHouseStatus.equals("")) { sql+=" and hzHouseStatus='" + hzHouseStatus + "'"; } if(!hzRequestSex.equals("")) { sql+=" and hzRequestSex='" + hzRequestSex +"'"; } if(!fixUp.equals("")) { sql+=" and fixUp='" + fixUp + "'"; } if(lcHeightMolecuse!=0) { sql+=" and lcHeightMolecuse=" + lcHeightMolecuse; } if(!orientation.equals("")) { sql+=" and orientation='" + orientation + "'"; } if(buildArea!=0) { sql+=" and buildArea=" + buildArea; } if(useArea!=0) { sql+=" and useArea=" + useArea; } if(rentalDigit!=0) { sql+=" and rentalDigit=" + rentalDigit; } if(!title.equals("")) { sql+=" and title like '%" + title + "%'"; } sql+=" order by id desc"; System.out.println(sql); detachedCriteria.add(Restrictions.sqlRestriction(sql)); criteria = detachedCriteria.getExecutableCriteria(session); list = criteria.list(); for(int i=0;i<list.size();i++) { InfoTab infoTab = (InfoTab)list.get(i); System.out.println(infoTab.getTitle() +" "+ infoTab.getCategoryId() +" "+ infoTab.getPareaName() +" "+ infoTab.getCareaName() +" " + infoTab.getHouseType() +" " + infoTab.getInfoPrivider()); } tx.commit(); } catch (HibernateException he) { he.printStackTrace(); } } 本文出自 “maomao” 部落格,請務必保留此出處http://maomao.blog.51cto.com/115985/33883 本文出自 51CTO.COM技術部落格