Spring-data-Jpa分组分页求和查询

本文介绍了如何在Spring-data-Jpa中进行分组、分页及求和查询。通过创建VO类来封装查询结果,提供了一种在需求变更时保存代码供日后参考的方法。
摘要由CSDN通过智能技术生成

由于需求变更,该部分代码需要从项目中删除,记录到博客中以便日后使用,仅供参考

创建VO类

public class AgriculturalMaterialInputSumVO {
   

    private Long agriculturalMaterialId;

    private Long batchId;

    private BigDecimal assetQuantitySum;

    private Long facilityId;
}

实现类

   public Page<AgriculturalMaterialInputVO> queryDouble(PageParam<AgriculturalMaterialInputBO> param) {
   
        //分页参数
        Pageable pageable=PageRequest.of(param.getPage()-1, param.getSize());
        //criteriaBuilder用于构建CriteriaQuery的构建器对象
        CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
        //criteriaQuery包含查询语句的各个部分,如where、max、sum、groupBy、orderBy等
        CriteriaQuery<AgriculturalMaterialInputSumVO> query = criteriaBuilder.createQuery(AgriculturalMaterialInputSumVO.class);
        //获取查询实例的属性,select * from books
        Root<AgriculturalMaterialInput> root = query.from(AgriculturalMaterialInput.class);
        //分组求和
         //相当于select type,max(price) maxPrice,sum(price) sumPrice from books中select 与 from之间的部分
         query.multiselect(root.get("agriculturalMaterialId"),root.get("batchId"),criteriaBuilder.toBigDecimal(criteriaBuilder.sumAsLong(root.get("assetQuantity"))),root.get("facilityId"));

        //条件查询相当于where...
        List<Predicate> predicateList = new ArrayList<>();
        if (Optional.ofNullable(param).map(PageParam::getEntity).isPresent()){
   
	        if (OrganizationList.printList().size() > 0) {
   
		        Expression<Long> exp = root.get("organizationId");
		        predicateList.add(exp.in(OrganizationList.printList()));
	        }
            if(Optional.ofNullable(param.getEntity()<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值