第六節 使用HQL和QBC查詢數據

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接口實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章