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();

       }

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章