HQL查詢數據
簡單查詢
from 實體類名
as關鍵字可以省略
查詢所有學生,並按照id升序排列
from Student as stu order by stu.id asc
屬性查詢
查詢學生的姓名和年齡
select stu.name,stu.age from Student as stu
聚集函數
select count(stu) from Student stu
select ave(stu.score) from Student stu
分組查詢
select employee.dept.name,count(*) from Employee as employee group by employee.dept
動態查詢
將結果封裝成對象
select new Person(stu.name,stu.age) from Student stu;
在項目中需要有
Person
類,同時Person
類中有Person(String name,Integer age)
構造函數
分頁查詢
public void pagedSearch(int pageIndex,int pageSize){
String hql="from Student";
Query query = session.createQuery(hql);
int startIndex = (pageIndex-1)*pageSize;
query.setFirstResult(startIndex);//設定從那個對象開始
query.setMaxResults(pageSize);//設置一次返回多少對象
List list = query.list();
}
條件查詢
//簡單參數
String hql="FROM User where id=?";
User user= (User)session.createQuery(hql)
.setParameter(0, 2).list();
//標籤參數
String hql="FROM User where id = :id";
List<User> list= session.createQuery(hql)
.setParameterList("id", 2)
.list();
//集合參數
String hql="FROM User where id IN (:ids)";
List<User> list= session.createQuery(hql)
.setParameterList("ids", new Object[]{1,3,4})
.list();
連接查詢
QBC查詢數據
使用HQL查詢,和sql查詢類似,但是仍然需要編寫各種sql語句,很是繁瑣
QBC主要由Criteria接口實現