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 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 list = criteria.list();
		Long count = list.get(0).longValue();
		System.out.println(count);
		
		criteria.setProjection(null);
		
		// 继续查询所有的联系人  select * from 表
		List 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 list = criteria.setProjection(Projections.count("lkm_id")).list();
		Long count = list.get(0).longValue();
		System.out.println(count);
		tr.commit();
	}


你可能感兴趣的:(HiBernate)