zl程序教程

您现在的位置是:首页 >  其他

当前栏目

前后端分离项目(五):数据分页查询(后端接口)

2023-03-20 15:35:19 时间

好家伙,

 

这里我们必须考虑:当数据库表单数据过多时,我们必须增加分页展示

想想上百条数据一页展示完,那么可能找不到我要的那条数据了

 

我们前后端分开处理:本篇介绍完成后端部分--分页查询接口的编写 

 

由于我对spring boot的知识储备并不丰富,

所以,本篇,我只能做到“会用”,做不到“详细解释”,但这依旧是一篇实用的博客

 

1.数据库目录

数据库表单:

 

 2.Spring boot项目目录

后端目录结构:

 

 

 

 (我连接数据库用的是Spring JDBC,当然了,你也可以跟我一样,把JDBC选上)

 

提一点:新建项目选服务时候记得选上SQL的 Spring JPA,这个写分页查询接口的时候会用到

记得按自己的数据库配置配置项

 

BookHandler类:

package com.example.demo2.controller;

import com.example.demo2.entity.Book;
import com.example.demo2.repository.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/book")
public class BookHandler {
    @Autowired
    private BookRepository bookRepository;

    @GetMapping("/findAll/{page}/{size}")
    public Page<Book> findAll(@PathVariable("page") Integer page, @PathVariable("size") Integer size){
        PageRequest request = PageRequest.of(page-1,size);
        return bookRepository.findAll(request);
    }

    @PostMapping("/save")
    public String save(@RequestBody Book book){
        Book result = bookRepository.save(book);
        if(result != null){
            return "success";
        }else{
            return "error";
        }
    }

    @GetMapping("/findById/{id}")
    public Book findById(@PathVariable("id") Integer id){
        return bookRepository.findById(id).get();
    }

    @PutMapping("/update")
    public String update(@RequestBody Book book){
        Book result = bookRepository.save(book);
        if(result != null){
            return "success";
        }else{
            return "error";
        }
    }

    @DeleteMapping("/deleteById/{id}")
    public void deleteById(@PathVariable("id") Integer id){
        bookRepository.deleteById(id);
    }
}

插一嘴:

PageRequest request = PageRequest.of(page-1,size);

此处的page要减一,我们现实逻辑是从第一页开始的

但表单的逻辑是从第0页开始的

 

Book类:

package com.example.demo2.entity;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;


@Entity
@Data
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private String author;
}

 

接口BookRepository:

package com.example.demo2.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import com.example.demo2.entity.Book;

public interface BookRepository extends JpaRepository<Book,Integer> {
}

 

查看一下我们的端口:localhost:8011/book/findAll/1/6

 

 (没毛病)