HQL語句查詢
阿新 • • 發佈:2018-11-21
單表查詢
查詢一個欄位
List<String> list0 = session.createQuery("select name from Province ").list();
查詢部分欄位
通過物件陣列接收
List<Object[]> list = session.createQuery("select id,name,code from Province ").list(); for(int i=0;i<list.size();i++){ Object[] obj = list.get(i); System.out.println(obj[0]+ ": "+obj[1] + " " + obj[2]); }
通過物件接收
List<Province> list1 = session.createQuery("select new Province(id,name,code) from Province ").list();
for(Province province:list1){
System.out.println(province.getName()+" "+province.getCode());
}
查詢unique
Number number = (Number) session.createQuery("select count(id) from Province ").uniqueResult(); System.out.println(number);
查詢根據某個欄位排序
List<City> cities = session.createQuery("select id,name,code from City order by code desc,name asc").list();
條件查詢
查詢id>30的所有province
List<Province> provinceList = session.createQuery("select p from Province p where id > ?").setInteger(0,30).list();
多條件查詢
String hql = "select p from Province p where id > ? and id < ? "; Query query = session.createQuery(hql); query.setParameter(0,20).setParameter(1,30); List<Province> provinceList1 = query.list();
命名引數佔位符
String hql1 = "select p from Province p where id > :i1 and id < :i2 and code = :code ";
List<Province> provinceList2 = session.createQuery(hql1).setParameter("i1",5).setParameter("i2",30).setParameter("code","410000").list();
分頁查詢
List<Province> provinceList3 = session.createQuery("from Province ").setFirstResult(9).setMaxResults(4).list();
多表關聯查詢
統計各個省對應的市總數
group by 統計函式 select 後面跟的列 只能是groupby分組的列 + 統計函式
List<Object[]> list = session.createQuery("select c.province.name,count(c.id) from City c group by c.province.name").list();
for (Object[] objects :list){
System.out.println(objects[0] +" "+objects[1]);
}
查詢 市名稱,對應的省名稱 使用join關聯
List<Object[]> list1 = session.createQuery("select c.name,p.name from City c join c.province as p").list();
List<Object[]> list2 = session.createQuery("select c.name,p.name from City c inner join c.province as p").list();
//左外連線
List<Object[]> list3 = session.createQuery("select c.name,p.name from City c left outer join c.province as p").list();
//右外連線
List<Object[]> list4 = session.createQuery("select c.name,p.name from City c right outer join c.province as p").list();
使用原生sql查詢 地區名,市名,省名稱
List<Object[]> list = session.createSQLQuery("select a.name as aname,c.name as cname,p.name as pname from area a join city c on c.code=a.citycode join province p on c.provincecode=p.code").list();