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

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


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值