hibernate 多条件组合查询 之 sql 拼接

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技术博客

 

你可能感兴趣的:(sql,Hibernate,Blog)