- 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_
总条数: