SpringBoot学习笔记10——spring-data-jpa之分页查询

今天我们来学习一下spring-data-jpa的分页查询的实现

在上次初探JPA之后我们接下来学习分页查询,本篇博客是接上一篇的,如果有需要了解jpa配置的话可以看上一篇博客https://blog.csdn.net/lp840312696/article/details/83549937

分页查询比较简单,只需要定义一个分页类即可,话不多说直接上代码。

service代码

package com.youyou.address.service;

import com.youyou.address.dao.ContacterDao;
import com.youyou.address.dao.ContacterEORepo;
import com.youyou.address.entity.ContacterEO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.querydsl.QPageRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional
public class ContacterService {

    @Autowired
    private ContacterDao dao;

    @Autowired
    private ContacterEORepo contacterEORepo;

    public void insertOne(ContacterEO contacterEO) {
        dao.insertOne(contacterEO);
    }

    public List<ContacterEO> findAll() {
        return dao.findAll();
    }

    /**
     * 保存联系人
     *
     * @param contacterEO
     */
    public void saveOne(ContacterEO contacterEO) {
        contacterEORepo.save(contacterEO);
    }

    /**
     * 分页查询
     * @param page
     * @return
     */
    public Page<ContacterEO> findByPage(PageRequest page) {
        Page<ContacterEO> all = contacterEORepo.findAll(page );
        return all;
    }

}

controller代码如下:

package com.youyou.address.controller;

import com.youyou.address.entity.ContacterEO;
import com.youyou.address.service.ContacterService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@Api(description = "联系人接口")
@RestController
@RequestMapping(value = "/contacter")
public class ContacterController {

    @Autowired
    private ContacterService service;

    @ApiOperation(value = "新增")
    @GetMapping("/add")
    public ContacterEO add(ContacterEO contacterEO) {
        System.out.println("添加一个联系人");

        service.saveOne(contacterEO);

        return contacterEO;
    }

    @ApiOperation(value = "查询所有")
    @GetMapping("/findAll")
    public List<ContacterEO> findAll() {
        return service.findAll();
    }

    @ApiOperation(value = "分页查询")
    @GetMapping("/findByPage")
    public Page<ContacterEO> findByPage(int pageNo, int size ,Sort.Direction direction) {
        PageRequest page = PageRequest.of(pageNo, size, Sort.by(direction, "name"));
        return service.findByPage(page);
    }

}

核心代码就是

PageRequest page = PageRequest.of(pageNo, size, Sort.by(direction, "name"));

pageNo:页码(从0开始)

size:每页条数

direction:排序标识,即ASC或DESC

name:需要排序的字段

猜你喜欢

转载自blog.csdn.net/lp840312696/article/details/83628009