您的位置:首页 > 其它

SSH与SSM学习之hibernate14——Criteria查询

2017-09-17 21:51 381 查看
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=1, name='小明', age=20}, User{id=2, name='xiaoming', age=19}, User{id=3, name='mingming', age=22}, User{id=4, name='mingge', age=20}, User{id=5, name='xx', age=99}, User{id=6, name='wiming', age=20}]


三、条件查询

3.1 说明

使用添加查询,我们需要个Criteria添加条件,我们主要使用到 Restrictions这个类的方法

sql中的表达式Restrictions中的方法
>gt
=
ge
<lt
<=le
==eq
!=ne
inin
between andbetween
likelike
is not nullisNotNull
is nullisNull
oror
andand

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",1));
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=1, name='小明', age=20}


四、分页查询

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(0);
// 查询3条数据
criteria.setMaxResults(3);
//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=1, name='小明', age=20}, User{id=2, name='xiaoming', age=19}, User{id=3, name='mingming', age=22}]


五、查询总记录数

5.1 聚合函数

Criteria 中我们可以使用聚合函数。如下

//3. 设置查询的聚合函数 => 总行数
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_
总条数:6
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: