複製代碼代碼如下:
package com.zxd.test;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.zxd.bean.House;
import com.zxd.util.QueryProperty;
/**
* HQL封閉查詢的測試類
* @author zhang
*
*/
public class TestHouse {
public static void main(String[] args) {
//公共的成員變數
SessionFactory sf = null;
Session session = null;
QueryProperty qp = new QueryProperty();
//封裝查詢的數據
qp.setTitle("%好房%");
qp.setStreet_id("1002");
qp.setType_id("1004");
qp.setLow_price(20);
qp.setHigh_price(200);
qp.setSmall_floorage(50);
qp.setBig_floorage(180);
//HQL語句
StringBuffer sb = new StringBuffer();
sb.append("from House where ");
sb.append("(title like :title) ");
sb.append("and (type_id like :type_id) ");
sb.append("and (street_id like :street_id) ");
sb.append("and (price between :low_price and :high_price) ");
sb.append("and (floorage between :small_floorage and :big_floorage)");
try {
//開始執行查詢
sf = new Configuration().configure().buildSessionFactory();
session = sf.openSession();
Query query = session.createQuery(sb.toString());
query.setProperties(qp);
List<House> list = query.list();
//第一種用:的循環
/*for(House house:list){
System.out.println("標題是:"+house.getTitle());
System.out.println("面積是:"+house.getFloorage());
System.out.println("價格是:"+house.getPrice());
System.out.println("區是:"+house.getStreet().getDistrict().getName());
System.out.println("街道是:"+house.getStreet().getName());
System.out.println("----------------------------------");
}*/
//第二種循環
for(int i = 0;i<list.size();i++){
System.out.println("標題是:"+list.get(i).getTitle());
System.out.println("面積是:"+list.get(i).getFloorage());
System.out.println("價格是:"+list.get(i).getPrice());
System.out.println("區是:"+list.get(i).getStreet().getDistrict().getName());
System.out.println("街道是:"+list.get(i).getStreet().getName());
System.out.println("----------------------------------");
}
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
session.close();
sf.close();
}
}
}
上面例子中的第一種循環是我沒有記住的,用了關鍵字符“:”,一般這種循環是用來對一個集合的遍歷上的(List<House>、Map)中的用的很方便。
第二種循環是普通的循環我這是Java中最常見的一種for循環。