jpa常用代码整理
  igua2XmSBOYh 2023年11月02日 53 0
JPA

1.分页查询

public ResultRes queryCard(AssetCardQueryForm queryForm) {
QAssetCardEntity cardEntity = QAssetCardEntity.assetCardEntity;
        QAssetCatgoryEntity catgoryEntity = QAssetCatgoryEntity.assetCatgoryEntity;
        BooleanBuilder builder = buildQueryPara(queryForm, cardEntity);
        QueryResults<AssetCardVO> cardVOQueryResults = queryFactory.select(
                        Projections.bean(
                                AssetCardVO.class,
                                cardEntity.phid,
                                cardEntity.orgId,
                                catgoryEntity.name.as("assetType"),                             
                                cardEntity.generateMethod
                        ))
                .from(cardEntity).leftJoin(catgoryEntity).on(cardEntity.assetType.eq(catgoryEntity.phid))
                .where(builder)
                .orderBy(cardEntity.assetCode.asc(), cardEntity.phInsertDt.desc())
                .offset((queryForm.getCurrent() - 1) * queryForm.getSize())
                .limit(queryForm.getSize())
                .fetchResults();
  return ResultRes.success(cardVOQueryResults);
}

2.返回单个对象

public AssetCardTotalVO queryCollectListTotal(AssetCardCollectForm queryForm) {
        QAssetCardEntity cardEntity = QAssetCardEntity.assetCardEntity;
        BooleanBuilder builder = buildQueryForm(queryForm, cardEntity);
        AssetCardTotalVO cardTotalVO = queryFactory.select(
                        Projections.bean(
                                AssetCardTotalVO.class,
                                cardEntity.cost.sum().as("totalCost"),
                                cardEntity.netValue.sum().as("totalNetValue")
                        ))
                .from(cardEntity)
                .leftJoin(qBdaOrgEntity).on(cardEntity.orgId.eq(qBdaOrgEntity.phid))
                .where(builder)
                .fetchOne();
        if(cardTotalVO.getTotalCost() == null){
            cardTotalVO.setTotalCost(BigDecimal.ZERO);
        }
        if(cardTotalVO.getTotalNetValue() == null){
            cardTotalVO.setTotalNetValue(BigDecimal.ZERO);
        }
        cardTotalVO.setTotalDeprMoney(cardTotalVO.getTotalCost().subtract(cardTotalVO.getTotalNetValue()));
        return cardTotalVO;
    }

3.返回list查询

@Override
    public List<AssetCardEntity> findByPhidIn(Collection<Long> cardIds) {
        return queryFactory.selectFrom(qAssetCardEntity)
                .where(qAssetCardEntity.phid.in(cardIds)
                        .and(qAssetCardEntity.phCurorgid.eq(LoginInfoUtil.getInstance().getOrgId()))
                        .and(qAssetCardEntity.phDelflag.eq(0L)))
                .fetch();
    }

4.查询组织以及下级组织关联数据

@Override
    public List<AssetCardStatisVO> statistics(StatisticsForm statisticsForm) {
        QBdaOrgEntity qBdaOrgEntity1 = new QBdaOrgEntity("t1");
        QBdaOrgEntity qBdaOrgEntity2 = new QBdaOrgEntity("t2");

        //统计数据
        BooleanBuilder builder = new BooleanBuilder();
        builder.and(qAssetCardEntity.phDelflag.eq(0L));
        if(StringUtils.isNotBlank(statisticsForm.getAssetNature())){
            builder.and(qAssetCardEntity.assetNature.eq(statisticsForm.getAssetNature()));
        }
        if(statisticsForm.getEndAssetDate() != null){
            builder.and(qAssetCardEntity.accountInTime.loe(statisticsForm.getEndAssetDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()));
        }
        if(CollectionUtils.isNotEmpty(statisticsForm.getTradeTypes())){
            builder.and(qBdaOrgEntity2.tradeType.in(statisticsForm.getTradeTypes()));
        }

        List<AssetCardStatisDataVO> assetCardStatisDataVOList = queryFactory
                .select(Projections.bean(AssetCardStatisDataVO.class,
                        qBdaOrgEntity1.phid.as("orgId"),
                        qBdaOrgEntity1.name.as("orgName"),
                        qAssetCardEntity.assetType,
                        qAssetCardEntity.assetNature,
                        qAssetCardEntity.assetNum.sum().as("totalAssetNum"),
                        qAssetCardEntity.cost.sum().as("totalCost"),
                        qAssetCardEntity.netValue.sum().as("totalNetValue")))
                .from(qBdaOrgEntity1)
                .join(qBdaOrgEntity2)
                .on(qBdaOrgEntity2.encode.like(qBdaOrgEntity1.encode.concat("%")))
                .leftJoin(qAssetCardEntity)
                .on(qBdaOrgEntity2.phid.eq(qAssetCardEntity.orgId))
                .where(builder)
                .groupBy(qBdaOrgEntity1.phid,
                        qBdaOrgEntity1.name,
                        qAssetCardEntity.assetType,
                        qAssetCardEntity.assetNature)
                .fetch();
        return cardStatisVOList;
    }

5.直接在JPA上写插入更新sql

@Modifying
    @Transactional
    @Query(value =
            "insert into bdata_approval_cnt(org_id,approvaling_cnt, notPass_cnt, pass_cnt) " +
                    "(SELECT org_id, " +
                    "SUM(CASE WHEN form_status = 2 THEN 1 ELSE 0 END) AS approvaling_cnt, " +
                    "SUM(CASE WHEN form_status = 3 THEN 1 ELSE 0 END) AS pass_cnt, " +
                    "SUM(CASE WHEN form_status = 4 THEN 1 ELSE 0 END) AS notPass_cnt " +
                    "FROM approval_form_instance " +
                    "WHERE ph_delflag = 0 AND form_status IN (2, 3, 4) " +
                    "GROUP BY org_id)",nativeQuery = true)
    void insertFormInstanceCount();

6.直接在JPA上写更新sql

@Transactional
    @Modifying
    @Query(value = "update ASSET_ALLC_CARD_LINK  set src_org_id = :srcOrgId, tar_org_id = :tarOrgId ,ph_curorgid = :tarOrgId where  ph_curorgid = :srcOrgId ",nativeQuery = true)
    void updateAssetAllcCardLink(@Param("srcOrgId") Long srcOrgId, @Param("tarOrgId") Long tarOrgId);

7.直接在JPA上写查询

@Query(value ="select sum(bfc.approvaling_cnt) approvalingCnt, sum(bfc.notPass_cnt) notPassCnt, sum(bfc.pass_cnt) passCnt\n" +
            "from bdata_approval_cnt bfc \n" +
            "left join bda_org bo on bfc.org_id=bo.phid \n" +
            "where bo.encode like ?1%",nativeQuery = true)
    Map<Object,Object> getApprovalCnt(String orgCode);
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

igua2XmSBOYh
作者其他文章 更多