前后端分离项目(五):数据分页查询(后端接口)
好家伙,
这里我们必须考虑:当数据库表单数据过多时,我们必须增加分页展示
想想上百条数据一页展示完,那么可能找不到我要的那条数据了
我们前后端分开处理:本篇介绍完成后端部分--分页查询接口的编写
由于我对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
(没毛病)