- 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_
總條數: