您的位置:首页 > 其它

Hibernate的学习之路三十四(QBC的聚合函数的查询)

2017-12-04 15:13 435 查看

前言

继续来学习QBC的聚合函数的查法。

分析

5. 聚合函数查询(Projection的聚合函数的接口,而Projections是Hibernate提供的工具类,使用该工具类设置聚合函数查询)
* 使用QBC的聚合函数查询,需要使用criteria.setProjection()方法
* 具体的代码如下
Session session = HibernateUtils.getCurrentSession();
Transaction tr = session.beginTransaction();
Criteria criteria = session.createCriteria(Linkman.class);
criteria.setProjection(Projections.rowCount());
List<Number> list = criteria.list();
Long count = list.get(0).longValue();
System.out.println(count);
tr.commit();

代码如下:

在第一个方法中,存在一个问题,其中关键的一句是
criteria.setProjection(null);
因为之前适用的是聚合函数的查法,set进方法了,如果在用其他查询,需要set一个null,恢复其默认值。

/**
* 强调问题: select count(*) from 表,又想查select * from 表单,存在问题
*/
@Test
public void run9(){
Session session = HibernateUtils.getCurrentSession();
Transaction tr = session.beginTransaction();
// 创建QBC查询接口
Criteria criteria = session.createCriteria(Linkman.class);
// 设置聚合函数的方式  select count(lkm_id) from 表;  5
criteria.setProjection(Projections.count("lkm_id"));
List<Number> list = criteria.list();
Long count = list.get(0).longValue();
System.out.println(count);

criteria.setProjection(null);

// 继续查询所有的联系人  select * from 表
List<Linkman> mans = criteria.list();
for (Linkman linkman : mans) {
System.out.println(linkman);
}

tr.commit();
}

/**
* 聚合函数的查询
*/
@Test
public void run8(){
Session session = HibernateUtils.getCurrentSession();
Transaction tr = session.beginTransaction();
// 创建QBC查询接口
Criteria criteria = session.createCriteria(Linkman.class);
// 设置聚合函数的方式
List<Number> list = criteria.setProjection(Projections.count("lkm_id")).list();
Long count = list.get(0).longValue();
System.out.println(count);
tr.commit();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: