解决jpa用原生sql无法分页的问题

1、获取接口传来的分页参数

String page_id=request.getParameter("page_id");//页码
String limit=request.getParameter("limit");    //每页数据条数
//判断为空时赋予初始值
if(StringUtils.isBlank(page_id)){
     page_id="1";
  }
if(StringUtils.isBlank(limit)){
     limit="10";
  }
//用PageRequest 接收分页参数
PageRequest pageRequest = PageRequest.of(Integer.parseInt(page_id) - 1, Integer.parseInt(limit));

2、业务层调用jpa查询

List<Map<String, Object>> comments = postCommentRepository.findCommentList("0", post_id, customerEntity.getId(), Integer.parseInt(pageRequest.getOffset()+""),pageRequest.getPageSize());

3、jpa用原声sql查询(nativeQuery = true)

      加limit 使用传来的pageOffset和pageSize限制查询几条即可

     此时要用List接收查询的数据,而不能用Page接收

@Query(value = "(select id id,content content,audit_flag audit_flag,create_date create_time," +
            "customer_id customer_id " +
            "from post_comment " +
            "where del_flag=?1 and post_id=?2 and audit_flag='1')" +
            "union " +
            "(select id id,content content,audit_flag audit_flag,create_date create_time," +
            "customer_id customer_id " +
            "from post_comment " +
            "where del_flag=?1 and post_id=?2 and customer_id=?3 and audit_flag in('0','2'))" +
            "limit ?4,?5",nativeQuery = true)
    List<Map<String,Object>> findCommentList(String delFlag,String post_id,String customerId,int pageOffset,int pageSize);

注意:我这里用的是union联合查询,要对查出的整体数据进行分页,则需要将union两边的sql用括号包起来

猜你喜欢

转载自blog.csdn.net/weixin_39936341/article/details/83584253