(spring boot)spring data JPA 高级动态查询, 排序加分页加多参数查询 返回二元组

这篇博客详细介绍了如何在Spring Boot项目中,使用Spring Data JPA进行高级动态查询,包括处理多个可选参数、排序和分页,并返回二元组数据。博主分享了从前端页面到后端服务的实现过程,包括controller、service、dao和dto层的代码实现,展示了如何优雅地处理不完全参数的情况,以提高代码的灵活性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(spring boot)spring data JPA 高级动态查询, 排序加分页加多参数查询 返回二元组

业务需求是根据前端传来的四个参数进行匹配查询, 并且要将总共查出来的数据总数返回至前端(因为前端有进行分页, 首尾页等), 但是前端未必会传来四个参数, 也可能是随机的其中一个,两个等. 这时候如果自己在dao层,手写查询方法或者sql语句需要大量代码, 并且非常麻烦, 在多方查阅资料,以及询问公司前辈的情况下, 终于完成了项目需求,
贴出前端查询页面:贴出前端查询页面
先贴出二元组的代码,

package com.leadmap.mapservice.common;

/**
 * Company: 
 * Description:
 *
 * @author: ljy
 * @Date: 2019/1/3 15:27
 */
	public class TwoTuple<A, B> {
   	public final A first;
    private final B second;
    
    public TwoTuple(A a, B b){
        first = a;
        second = b;
    }

    public A getFirst() {
        return first;
    }

    public B getSecond(){
        return second;
    }

    @Override
    public String toString(){
        return "(" + first + ", " + second + ")";
    }
}

controller层代码:

package com.leadmap.mapservice.controller;

import com.leadmap.mapservice.common.TwoTuple;
import com.leadmap.mapservice.dao.DocumentInfoDao;
import com.leadmap.mapservice.dao.OpinionFeedbackDao;
import com.leadmap.mapservice.dao.UserCollectDocDao;
import com.leadmap.mapservice.dao.UserLikeDocDao;
import com.leadmap.mapservice.dto.ResultInfo;
import com.leadmap.mapservice.entity.DocumentInfo;
import com.leadmap.mapservice.entity.OpinionFeedback;
import com.leadmap.mapservice.service.DocumentService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * Company: 
 * Description:
 *
 * @author: ljy
 * @Date: 2018/12/20 10:31
 */
@Controller
public class DocumentController {

    private final static Logger logger = LoggerFactory.getLogger(DocumentController.class);

    @Auto
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值