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();
       }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值