天天看點

SSH與SSM學習之hibernate14——Criteria查詢SSH與SSM學習之hibernate14——Criteria查詢

  • SSH與SSM學習之hibernate14Criteria查詢
    • 一Criteria
    • Criteria 中擁有查詢的方法如 list uniqueResult等
    • 二基本查詢
      • 1 示例代碼
      • 1 查詢結果
    • 三條件查詢
      • 1 說明
      • 2 示例代碼
      • 3 查詢結果
    • 四分頁查詢
      • 1 示例代碼
      • 2 查詢結果
    • 五查詢總記錄數
      • 1 聚合函數
      • 2 示例代碼
      • 3 查詢結果

SSH與SSM學習之hibernate14——Criteria查詢

一、Criteria

比較适合單表查詢。Hibernate自創的無語句面向對象查詢。

Criteria 中擁有查詢的方法,如 list() ,uniqueResult()等。

二、基本查詢

2.1 示例代碼

/**
 * Criteria基本查詢
 */
@Test
public void criteriaBaseDemo(){
    //1.建立session
    Session session = HibernateUtils.openSession();

    //------------------基本查詢---------------
    //2.建立Criteria查詢對象
    Criteria criteria = session.createCriteria(User.class);
    //3.擷取集合
    List<User> users = criteria.list();
    //4.列印
    System.out.println(users);
    //-----------------------------------------

    //5.關閉資源
    session.close();
}
           

2.1 查詢結果

Hibernate: 
    select
        this_.id as id1_0_0_,
        this_.name as name2_0_0_,
        this_.age as age3_0_0_ 
    from
        tb_user2 this_
[User{id=, name='小明', age=}, User{id=, name='xiaoming', age=}, User{id=, name='mingming', age=}, User{id=, name='mingge', age=}, User{id=, name='xx', age=}, User{id=, name='wiming', age=}]
           

三、條件查詢

3.1 說明

使用添加查詢,我們需要個Criteria添加條件,我們主要使用到 Restrictions這個類的方法

sql中的表達式 Restrictions中的方法
> gt
=
ge
< lt
<= le
== eq
!= ne
in in
between and between
like like
is not null isNotNull
is null isNull
or or
and and

3.2 示例代碼

/**
 * Criteria 條件查詢
HQL語句中,不可能出現任何資料庫相關的資訊的
 >              gt
 >=             ge
 <              lt
 <=             le
 ==             eq
 !=             ne
 in             in
 between and        between
 like           like
 is not null        isNotNull
 is null            isNull
 or             or
 and                and
 */
@Test
public void criteriaConditionDemo(){
    //1.建立session
    Session session = HibernateUtils.openSession();

    //------------------條件查詢---------------

    //2.擷取Criteria對象
    Criteria criteria = session.createCriteria(User.class);
    //3.添加查詢參數---> id 為1的User對象
    criteria.add(Restrictions.eq("id",));
    User user = (User) criteria.uniqueResult();
    //4.列印
    System.out.println(user);
    //-----------------------------------------
    //5.關閉資源
    session.close();
}
           

3.3 查詢結果

Hibernate: 
    select
        this_.id as id1_0_0_,
        this_.name as name2_0_0_,
        this_.age as age3_0_0_ 
    from
        tb_user2 this_ 
    where
        this_.id=?
User{id=, name='小明', age=}
           

四、分頁查詢

4.1 示例代碼

/**
 * Criteria分頁
 */
@Test
public void criteriaPageDemo(){
    //1.建立session
    Session session = HibernateUtils.openSession();

    //------------------條件查詢---------------
    //2.建立Criteria查詢對象
    Criteria criteria = session.createCriteria(User.class);
    //3.設定分頁資訊
    // 從0開始查詢
    criteria.setFirstResult();
    // 查詢3條資料
    criteria.setMaxResults();
    //4.執行查詢
    List<User> users = criteria.list();
    //5.列印
    System.out.println(users);
    //-----------------------------------------
    //6.關閉資源
    session.close();
}
           

4.2 查詢結果

Hibernate: 
    select
        this_.id as id1_0_0_,
        this_.name as name2_0_0_,
        this_.age as age3_0_0_ 
    from
        tb_user2 this_ limit ?
[User{id=, name='小明', age=}, User{id=, name='xiaoming', age=}, User{id=, name='mingming', age=}]
           

五、查詢總記錄數

5.1 聚合函數

Criteria 中我們可以使用聚合函數。如下

// 設定查詢的聚合函數 => 總行數
criteria.setProjection(Projections.rowCount());
           

Projections中定義了很多聚合函數,例如 sum、avg、count、max、min等

5.2 示例代碼

/**
 * Criteria查詢總記錄數
 */
@Test
public void criteriaTotalDemo(){
    //1.建立session
    Session session = HibernateUtils.openSession();

    //------------------條件查詢---------------
    //2.建立Criteria查詢對象
    Criteria criteria = session.createCriteria(User.class);
    //3. 設定查詢的聚合函數 => 總行數
    criteria.setProjection(Projections.rowCount());
    //4. 查詢
    Long count = (Long)criteria.uniqueResult();
    //5. 列印
    System.out.println("總條數:"+count);
    //-----------------------------------------
    //6.關閉資源
    session.close();
}
           

5.3 查詢結果

Hibernate: 
    select
        count(*) as y0_ 
    from
        tb_user2 this_
總條數:
           

繼續閱讀