次のようにコードをコピーします。
パッケージcom.zxd.test;
java.util.Listをインポートします。
org.hibernate.HibernateException をインポートします。
org.hibernate.Query をインポートします。
org.hibernate.Session をインポートします。
org.hibernate.SessionFactory をインポートします。
org.hibernate.cfg.Configuration をインポートします。
com.zxd.bean.House をインポートします。
com.zxd.util.QueryPropertyをインポートします。
/**
* HQLクローズドクエリのテストクラス
* @著者張
*
*/
パブリック クラス TestHouse {
public static void main(String[] args) {
//パブリックメンバー変数
SessionFactory sf = null;
セッションセッション = null;
QueryProperty qp = 新しい 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("どこの家から");
sb.append("(:title のようなタイトル) ");
sb.append("および (type_id like :type_id) ");
sb.append("および (street_id like :street_id) ");
sb.append("および (:low_price と :high_price の間の価格) ");
sb.append("および (:small_floorage と :big_floorage の間の床)");
試す {
//クエリの実行を開始します
sf = 新しいConfiguration().configure().buildSessionFactory();
セッション = sf.openSession();
クエリクエリ = session.createQuery(sb.toString());
query.setProperties(qp);
List<House> list = query.list();
//最初のタイプはループを使用します。
/*for(ハウスハウス:リスト){
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("---------------------------------");
}*/
// 2 番目のループ
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 自動生成された catch ブロック
e.printStackTrace();
}ついに{
session.close();
sf.close();
}
}
}
上の例の最初のタイプのループは覚えていませんでしたが、キー文字「:」を使用しています。通常、このタイプのループはコレクション (List<House>、Map) を走査するために使用されます。
2 番目のタイプのループは通常のループです。これは Java で最も一般的なループです。