JPA之Eclipselink--》查询符合条件的数据总量

package com.rex.junit;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.rex.entity.metadata.MetadataGroupEntity;

public class ServiceTest {

 private EntityManagerFactory entityManagerFactory;
 
 /**
 * @Title: setUp
 * @Description: JAVA SE获取持久单元工厂实例
 * @throws Exception  
 */
 @Before
 public void setUp() throws Exception {
  entityManagerFactory = Persistence.createEntityManagerFactory("rexWEB");
 }

 /**
 * @Title: tearDown
 * @Description: 测试实例完成后关闭连接工厂实例释放资源
 * @throws Exception  
 */
 @After
 public void tearDown() throws Exception {
  if (entityManagerFactory!=null && entityManagerFactory.isOpen()) {
   entityManagerFactory.close();
  }
 }

 /**
 * @Title: fetchCriteriaCount
 * @Description: 通过Criteria实例获取符合条件的数据量
 */
 @Test
 public void fetchCriteriaCount() {
  EntityManager entityManager = null;
  try {
   //创建数据库连接对象
   entityManager = entityManagerFactory.createEntityManager();
   //创建条件构造器实例
   CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
   //创建条件查询实例
   CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
   //创建查询实体
   Root<MetadataGroupEntity> groupRoot = criteriaQuery.from(MetadataGroupEntity.class);
   //创建查询结果实例
   criteriaQuery.select(criteriaBuilder.count(groupRoot));
   Query query = entityManager.createQuery(criteriaQuery);
   Long count = (Long) query.getSingleResult();
   System.out.println("------------------------------------------------------------------------");
   System.out.println(count);
   System.out.println("------------------------------------------------------------------------");
  } catch (Throwable e) {
   e.printStackTrace();
  }finally{
   if (entityManager!=null && entityManager.isOpen()) {
    entityManager.close();
   }
  }
 }

}

 

转载于:https://my.oschina.net/rex2012/blog/283549

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值