JPA多表分页Specif多表分页Criteri多表分页

JPA的Predicate多条件设置

详细代码

@Transactional
	public boolean incrNum(String matterId,String termId){
	    Matter matter = matterDao.findOne(matterId);
	    if(matter == null) return false;
	    DeviceInfo deviceInfo = deviceInfoDao.findByTermId(termId);
	    if(deviceInfo == null)return false;
	    
	    MatterBrowseReport old = matterBrowseReportDao.findOne(new Specification<MatterBrowseReport>() {
		Predicate matterIdcon = null;
		Predicate termIdCon = null;
		Predicate visitDateCon = null;
	        @Override
	        public Predicate toPredicate(Root<MatterBrowseReport> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
        		if (StringUtils.isNotBlank(matterId)) {
        		    matterIdcon = cb.equal(root.get("matterId"), matterId);
        		}
        		if (StringUtils.isNotBlank(termId)) {
        		    termIdCon = cb.equal(root.get("termId"), termId);
        		}
        		visitDateCon = cb.equal(root.get("visitDate"), DateUtil.format(new Date(), "yyyy-MM-dd"));
        		return cb.and(matterIdcon,termIdCon,visitDateCon);
	        }
	    });
	    if(old == null) {
		old = new MatterBrowseReport();
		old.setId(IDKeyUtil.getId());
		old.setMatterId(matterId);
		old.setVisitNum(1l);
		old.setTermId(termId);
		old.setMatterName(matter.getMatterName());
		old.setVisitDate(DateUtil.format(new Date(), "yyyy-MM-dd"));
		old.setDeptId(deviceInfo.getDeptId());
		old.setDeptName(deviceInfo.getDeptName());
		matterBrowseReportDao.save(old);
	    }else {
		old.setVisitNum(old.getVisitNum() + 1);
		matterBrowseReportDao.saveAndFlush(old);
	    }
	    return true;
	}

多表关联查询

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SalesRecordView.class, "V");//主表
	
	if(org.springframework.util.StringUtils.hasText(queryForm.getSyssn())) {
	    detachedCriteria.add(Restrictions.eq("V.id", queryForm.getSyssn()));
	}
	if(org.springframework.util.StringUtils.hasText(queryForm.getCertNum())) {
	    detachedCriteria.add(Restrictions.eq("V.srcSN", queryForm.getCertNum()));
	    detachedCriteria.addOrder(org.hibernate.criterion.Order.desc("bookTime"));
	}
	
	if(org.springframework.util.StringUtils.hasText(queryForm.getMobilnum())) {
	    detachedCriteria.add(Restrictions.eq("V.cellTel", queryForm.getMobilnum()));
	}
	if(org.springframework.util.StringUtils.hasText(queryForm.getFetchCode())) {
	    detachedCriteria.add(Restrictions.like("V.fetchCode", queryForm.getFetchCode(),MatchMode.START));
	}

	if (org.springframework.util.StringUtils.hasText(queryForm.getOtherUserName()) || org.springframework.util.StringUtils.hasText(queryForm.getOtherUserPhone())
		|| org.springframework.util.StringUtils.hasText(queryForm.getOtherUserIdCode())
		|| org.springframework.util.StringUtils.hasText(queryForm.getBarcode())) {
	    DetachedCriteria subCriteria = DetachedCriteria.forClass(SalesDetailsView.class, "D");//子表
	    ProjectionList   pList	 = Projections.projectionList();
	    pList.add(Projections.property("D.owner.id").as("id"));//实体属性
	    subCriteria.setProjection(pList);//在子表中添加关联列
	    //添加子表查询条件
	    if (org.springframework.util.StringUtils.hasText(queryForm.getOtherUserName()))
		subCriteria.add(Restrictions.like("D.userName", queryForm.getOtherUserName(),MatchMode.ANYWHERE));
	    if (org.springframework.util.StringUtils.hasText(queryForm.getOtherUserPhone()))
		subCriteria.add(Restrictions.like("D.userPhone", queryForm.getOtherUserPhone(),MatchMode.ANYWHERE));
	    if (org.springframework.util.StringUtils.hasText(queryForm.getOtherUserIdCode()))
		subCriteria.add(Restrictions.like("D.idCode", queryForm.getOtherUserIdCode(),MatchMode.ANYWHERE));
	    if (org.springframework.util.StringUtils.hasText(queryForm.getBarcode())) {
		subCriteria.add(Restrictions.like("D.barCode", queryForm.getBarcode(),MatchMode.ANYWHERE));
	    }
	    subCriteria.addOrder(org.hibernate.criterion.Order.desc("D.buyTime"));
	    subCriteria.setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY);
	    detachedCriteria.add(Property.forName("id").in(subCriteria));//关联子表条件查询结果的主表结果
	}
	List<SalesRecordView> views = this.getSalesRecordViewDAO().findByCriteria(detachedCriteria, 0, 200);//行数

分页模糊查询orderby

public Page<User> findForPage(User user,int page, int size) {
	    PageRequest pageable = new PageRequest(page, size);
	    return userDao.findAll(new Specification<User>() {
		Predicate pd = null;
	        @Override
	        public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
        		if (StringUtils.hasText(user.getName())) {
        		    pd = cb.like(root.get("name").as(String.class), "%"+user.getName()+"%");
        		    cb.and(pd);
        		}
        		query.where(pd);
        		query.orderBy(cb.desc(root.get("updateTime").as(Date.class)));
        		return query.getRestriction();
	        }
	    },pageable);
	}

分组统计countgroup

String strStartDate = DateUtil.dateToString(startDate, "yyyy-MM-dd");
	Date endDate = DateUtil.dateAdd(startDate, 1);
	DetachedCriteria dc2 = DetachedCriteria.forClass(SalesDetails.class);
	dc2.add(Restrictions.eq("validDate", startDate));
	ProjectionList ProjectionList = Projections.projectionList();
	ProjectionList.add(Projections.property("tkCode"));
	ProjectionList.add(Projections.count("validDate"),"count");
	ProjectionList.add(Projections.groupProperty("tkCode"));
	dc2.setProjection(ProjectionList);
	List<Object[]>  dateCounts = this.getTicketDAO().getHibernateTemplate().findByCriteria(dc2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值