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

前言

继续来学习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();
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值