queryDSL复杂查询的分页和自定义排序实现

本文介绍了如何在使用QueryDSL时进行复杂查询,并实现分页和自定义排序。通过自定义存储库的定义和引用,详细展示了代码示例,同时也指出了这种方法的不足,如需要手动转换元组数据。此外,还分享了将QueryDSL查询结果直接映射到自定义VO对象的技巧。
摘要由CSDN通过智能技术生成

一、首先自定义存储库的定义规范和引用方式,要特别注意,可参考我之前关于自定义存储库的总结

在这里插入图片描述

1.1、代码示例

package com.wondertek.oes.workbench.manage.repository.customize;

import com.google.common.collect.Lists;
import com.querydsl.core.QueryResults;
import com.querydsl.core.Tuple;
import com.querydsl.core.types.Predicate;
import com.querydsl.jpa.impl.JPAQuery;
import com.wondertek.oes.workbench.commons.enums.NodeResultEnum;
import com.wondertek.oes.workbench.commons.model.*;
import com.wondertek.oes.workbench.manage.vo.baseQuery.AssetInfoVo;
import com.wondertek.oes.workbench.manage.vo.baseQuery.AssetPageVo;
import com.wondertek.oes.workbench.manage.vo.baseQuery.McnRecordVo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List;

@Repository
public class EnRepositoryCustomImpl implements EnRepositoryCustom {
   

    @PersistenceContext
    private EntityManager em;

    /**
     * mcn详情查询
     *
     * @param groupId   工作组编号
     * @param programId 节目编号
     * @return List
     */
    @Override
    public List<McnRecordVo> McnRecordInfo(Long groupId, Long programId) {
   
        JPAQuery<McnRecordVo> query = new JPAQuery<>(em);

        QMcnInfo m = QMcnInfo.mcnInfo;
        QSubpInfo s = QSubpInfo.subpInfo;
        QTask t = QTask.task;
        QWorkGroup w = QWorkGroup.workGroup;

        List<Tuple> list = query.select(
                m.programId,
                s.contentId,
                m.assetId,
                s.assetName,
                m.disposeChannel,
                m.endTime,
                t.name,
                m.url,
                w.groupName)
                .from(m)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值