其他分享
首页 > 其他分享> > 最新Springboot详解和书管项目训练

最新Springboot详解和书管项目训练

作者:互联网

文章目录

SpringBoot入门案例

SpringBoot入门案例 (idea联网版)

  1. 建立一个空项目

image-20211224183844541

  1. 确定当前Maven的版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pSplzkn8-1641018122074)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112241842333.png)]

  1. 创建模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zjz6ptZY-1641018122075)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112241843484.png)]

选择Spring Initializr,选择jdk版本,其他都不用动,选择当前模块使用的技术集

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-urhwWpf0-1641018122076)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112241849295.png)]

image-20211224185118861

选择Spring web

  1. 界面如下

image-20211224191249000

  1. 写一个简单的类。然后运行,开发控制器类
package controller;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//Rest模式
@RestController
@RequestMapping("/books")
public class BookController {
        @GetMapping 
        public String getById(){
            System.out.println("spingboot is runing..");
            return "springboot is running";
    }

}

image-20211224193849945

运行成功

  1. 在网页中打开

image-20211224193745524

到目前为止一个最简单的boot程序已经完成

这两个文件就组成了整体的结构

image-20211224194115008

image-20211224195404344

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SWX1q2IM-1641018122079)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112241941048.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QOQayqFm-1641018122080)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112241954738.png)]

springboot对比spring的优点:就只需要写一个控制类。

最重要的一点是springboot需要联网操作

image-20211224195238497

小结

image-20211224195134315

  1. 开发SpringBoot程序可以根据向导进行联网快速制作
  2. SpringBoot程序需要基于JDK8进行制作
  3. SpringBoot程序中需要使用何种功能通过勾选选择技术
  4. 运行SpringBoot程序通过运行Application程序入口进行

SpringBoot创建 (idea不能联网,官网创建)

  1. 搜索spring官网

  2. 拉到最下面,点击Spring Initializr

image-20211225123520248

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9c2wvHK8-1641018122082)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112251236324.png)]

  1. 填完后,点击添加依赖包,搜索web

image-20211225123738720

  1. 点击下载springboot工程

image-20211225123943465

image-20211225124059734

  1. 把压缩目录复制到对应idea springboot目录中

image-20211225124154049

  1. 在idea中将工程导入其中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z11IiGRT-1641018122084)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112251244884.png)]

image-20211225124423245

image-20211225124451665

  1. 创建完之后,我们将之前的control包复制下来,查看是否运行成功,出现springboot is running…2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HXYzp9Gg-1641018122085)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112251459375.png)]

  1. 运行完后,表示成功

image-20211225150019538

image-20211225150037515


springboot创建 (阿里云版)

  1. 点击新创建项目

image-20211225150815736

image-20211225150937133

image-20211225151101588

  1. 测试

image-20211225153743427

image-20211225153813832

总结:国内访问spring官网可能回很慢,可以使用阿里云的网站,速度回变快


隐藏文件或文件夹

  1. 找到file types

image-20211227181141426

  1. 文件中.mvn就消失了

image-20211227181239475

image-20211227181648001


入门案例解析:parent

SpringBoot简介

  1. 依赖设置繁琐
  2. 配置繁琐
  1. 起步依赖
  2. 自动配置
  3. 辅助功能

小结:

  1. 开发SpringBoot程序要继承spring-boot-starter-parent
  2. spring-boot-starter-parent中定义了若干个依赖管理
  3. 继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突
  4. 继承parent的形式也可以采用引入依赖的形式实现效果(阿里云版)

starter

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tnHSRY7x-1641018122089)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112271900273.png)]


引导类

@SpringBootApplication
public class SpringBoot0101QuickstartApplication {

    public static void main(String[] args) {

        ConfigurableApplicationContext ctx = SpringApplication.run(SpringBoot0101QuickstartApplication.class, args);
        BookController bean=ctx.getBean(BookController.class);
        System.out.println("bean====>"+bean);
    }

}

内嵌tomcat

变更依赖包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aTm6JhTy-1641018122090)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112271936721.png)]

小结:

  1. 内嵌Tomcat服务器是SpringBoot辅助之一
  2. 内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并将对象交给Spring容器管理
  3. 变更内嵌服务器思想是取出现在服务器,添加全新服务器

复制模块

  1. 复制目录
  2. 修改pom.xml文件中的artifactId

image-20211227194806729

  1. 导入项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EG7YOguZ-1641018122091)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112271949920.png)]

  1. 修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8rCTOEfo-1641018122091)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112271954490.png)]

小结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cGAxbRvJ-1641018122092)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112272012263.png)]


基础配置

  1. 找到application.properties文件。application.properties是springBoot默认文件,通过键值对配置对应属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rIjNll0g-1641018122092)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112272014305.png)]

  1. 修改端口

image-20211227201630473

  1. 查看

image-20211227201656702

  1. application.properties
server.port=80
  1. application.yml
server:
	port:81
  1. application.yaml
server:
	port:82

属性提示消失解决方案

  1. 打开项目结构

image-20211227204843846


yaml数据格式

  1. 容易阅读
  2. 容易与脚本交互
  3. 以数据为核心,重数据轻格式

1 .yml(主流)

2 .yaml

小结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-841zgKgS-1641018122094)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112280908729.png)]


yml读取数据

image-20211228091335813


yaml文件中的变量引用

image-20211228092029720

image-20211228092134017


读取yaml全部属性数据

image-20211228094139987


读取yaml引用类型属性 数据

image-20211228095728868

image-20211228095828542

image-20211228095854032

image-20211228095923721

package com.itheima.springboot_01_02quickstart;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

//1.定义数据模型封装yaml文件对应的数据
//2.定义spring管控的bean
@Component
//3.指定加载的数据
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource {
    private String driver;
    private String url;
    private String username;
    private String password;

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "MyDataSource{" +
                "driver='" + driver + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
// datasource:
//         driver: com.mysql.jdbc.Driver
//         url: jdbc:mysql://localhost/springboot_db
//         username: root
//         password: root666

image-20211228100015786

小结:

  1. 使用@ConfigurationProperties注解绑定配置信息到封装类
  2. 封装类需要定义为Spring管理的bean,否则无法进行属性注入

SpringBoot整合JUnit

image-20211228101246074

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4QbAMier-1641018122098)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112281011554.png)]

image-20211228111641553

小结:

image-20211228111725278

image-20211228112834135

小结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OXP1Sufh-1641018122099)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112281129590.png)]


SpringBoot整合MyBatis

  1. 需要勾选依赖项

image-20211228113226328

  1. 将配置文件改为.yml结尾

image-20211228114855643

  1. 写配置文件连接数据库

image-20211228114920514

  1. 建立数据层和实体类

image-20211228143107497

package com.itheima.domain;

public class Book {
    private Integer id;
    private String type;
    private String name;
    private String description;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", type='" + type + '\'' +
                ", name='" + name + '\'' +
                ", description='" + description + '\'' +
                '}';
    }
}

package com.itheima.dao;

import com.itheima.domain.Book;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;


@Mapper
public interface BookDao {
   @Select("select * from tbl_book where id= #{id}")
    public Book getById(Integer id);
}

package com.itheima.springboot_05_mybitis;

import com.itheima.dao.BookDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Springboot05MybitisApplicationTests {

    @Autowired
    private BookDao bookDao;

    @Test
    void contextLoads() {
        System.out.println(bookDao.getById(1));
    }

}

image-20211228150251602

小结:

  1. 勾选MyBatis技术,也就是导入MyBatis对应的starter
  2. 数据库连接相关信息转换成配置
  3. 数据库SQL映射需要添加@Mapper被容器识别到

SpringBoot整合MyBatis常见错误

  1. 如果将版本降低

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XJbxMwgS-1641018122101)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112281524283.png)]


SpringBoot整合mybatis plus

  1. 使用阿里云服务器

image-20211228153127003

  1. 通过官网创建

image-20211228153616625

image-20211228153807312

#2.??????
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
    username: root
    password: 123456
    #设置Mp相关的配置
mybatis-plus:
  global-config:
    db-config:
      table-prefix: tbl_


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9I4OCGDi-1641018122103)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112281548496.png)]

小结:

image-20211228154935337


整合Druid

  1. 创建项目,和之前一样勾选两个

  2. 导入依赖包坐标

image-20211228155429536

  1. 配置druid在application.yml(两种方式)

image-20211228162325450

小结:

  1. 整合Druid需要导入Druid对应的starter
  2. 根据Druid提供的配置方式进行配置
  3. 整合第三方技术通用方式

SSMP整合案例制作分析

总体:

image-20220101141746827

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FsTVsv62-1641018122104)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202201011419774.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ub5xajn7-1641018122104)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112281639068.png)]

  1. 先开发基础CRUD功能,做一层测一层
  2. 调通页面,确认异步提交成功后,制作所有功能
  3. 添加分页功能与查询功能

模块创建

image-20211228164557962

  1. 修改pom.xml文件

image-20211228164752301

  1. 在pom.xml文件中手动添加德鲁伊和mybatis plus依赖包

image-20211228165143680

  1. 修改配置文件为.yml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yQEIz9nF-1641018122105)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112281654265.png)]


实体类快速开发(lombok)

  1. 在pom.xml中添加lombok依赖包

image-20211228171633020

  1. 在POJO实体类添加@Data注解,,提供了get/set方法,toString方法,hashode方法,equals方法等

image-20211228171845749


数据层标准开发

  1. 配置.yml文件

image-20211228185801634

  1. 用Mp形式创建接口,继承于BaseMapper

image-20211228191346213

  1. 在test目录下创建测试类
package com.itheima.springboot_08_ssmp.dao;


import com.itheima.dao.BookDao;
import com.itheima.domain.Book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class BookDaoTest {

    @Autowired
    private BookDao bookDao;


    @Test
    void testGetId(){
        System.out.println(bookDao.selectById(5));
    }
    @Test
    void testSave(){
        Book book = new Book();
        book.setType("测试数据123");
        book.setName("测试数据123");
        book.setDescrption("测试数据123");
        bookDao.insert(book);
    }
    @Test
    void testUpdate(){
        Book book = new Book();
        book.setId(9);
        book.setType("测试数据123aaa");
        book.setName("测试数据123");
        book.setDescrption("测试数据123");
        bookDao.updateById(book);
    }
    @Test
    void testDelete(){
    bookDao.deleteById(10);
    }
    @Test
    void testGetAll(){

        System.out.println(  bookDao.selectList(null));
    }
    @Test
    void testGetPage(){

    }
    @Test
    void testGetBy(){}
}

小结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LOfvmT7A-1641018122107)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112281926068.png)]

image-20211228192650245

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A5sJfm1D-1641018122108)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112281927423.png)]


开启MP运行日志

  1. 在.yml文件下添加

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rn2QZYK7-1641018122108)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112281931859.png)]

image-20211228193228388

image-20211228193417942


分页查询

  @Test
    void testGetPage(){
        IPage page = new Page(2,5);
        bookDao.selectPage(page,null);

    }
package com.itheima.config;


import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration  //配置类
public class MPconfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());  //分页拦截器
        return interceptor;

    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-arBwLGFt-1641018122109)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112281954332.png)]

image-20211228195429348


数据层标准开发(条件查询)

  1. 使用QueryWrapper对象封装查询条件,推荐使用LambdaQueryWrapper对象,所有查询操作封装方法调用

  2. 所有查询操作封装成方法调用

  3. 查询条件支持动态条件拼装

 @Test
    void testGetBy(){
        QueryWrapper<Book> qw = new QueryWrapper<Book>();
        qw.like("name","spring");
        bookDao.selectList(qw);

    }


    @Test   //使用Lambda表达式减少写错
    void testGetBy2(){

        String name = "spring";
        LambdaQueryWrapper<Book> lqw=new LambdaQueryWrapper<Book>();

        lqw.like(name!=null,Book::getName,name);
        bookDao.selectList(lqw);

    }

业务层标准开发(基础CRUD)

业务层开发

  1. 定义接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LwmSt9BH-1641018122110)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112282058047.png)]

package com.itheima.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.itheima.domain.Book;

import java.util.List;

public interface BookService {
    Boolean save(Book book);
    Boolean update(Book book);
    Boolean delete(Integer id);
    Book getById(Integer id);
    List<Book> getAll();
    IPage<Book> getPage(int currentPage,int pageSize);
}

package com.itheima.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.dao.BookDao;
import com.itheima.domain.Book;
import com.itheima.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service   //业务层对应的bean
public class BookServiceImpl  implements BookService {

    //转调数据层,进行注入
    @Autowired
    private BookDao bookDao;

    @Override
    public Boolean save(Book book) {
		//将业务状态设置为操作是否完成
        return bookDao.insert(book)>0;
    }

    @Override
    public Boolean update(Book book) {
        return bookDao.updateById(book)>0;
    }

    @Override
    public Boolean delete(Integer id) {
        return bookDao.deleteById(id)>0;
    }

    @Override
    public Book getById(Integer id) {
        return bookDao.selectById(id);
    }

    @Override
    public List<Book> getAll() {
        return bookDao.selectList(null);
    }

    @Override
    public IPage<Book> getPage(int currentPage, int pageSize) {
        IPage page = new Page(currentPage,pageSize);
         bookDao.selectPage(page,null);
         return page;
    }
}

image-20211228210019855

package com.itheima.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.itheima.domain.Book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class BookServiceTestCase {
    @Autowired
    private BookService bookService;

    @Test
    void testGetById(){  //业务层需要打印出来
        System.out.println(bookService.getById(4));
    }

    @Test
    void testSave(){
        Book book = new Book();
        book.setType("测试数据122223");
        book.setName("测试数据123");
        book.setDescrption("测试数据123");
        bookService.save(book);
    }
    @Test
    void testUpdate(){
        Book book = new Book();
        book.setId(9);
        book.setType("测试123aaa");
        book.setName("测试数据123");
        book.setDescrption("测试数据123");
        bookService.update(book);
    }
    @Test
    void testDelete(){
        bookService.delete(10);
    }
    @Test
    void testGetAll(){

        bookService.getAll();
    }
    @Test
    void testGetPage(){
        IPage<Book> page = bookService.getPage(2, 5);

    }

}

小结:

  1. Service接口名称定义成业务名称,并与Dao接口名称进行区别
  2. 制作测试类测试Service功能是否有效

业务层快速开发

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NB7HwHNl-1641018122110)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112282106506.png)]

  1. 业务层通用接口

image-20211228213036594

  1. 业务层通用实现类

image-20211228212936266

  1. 测试类
package com.itheima.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.domain.Book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class BookServiceTest {
    @Autowired
    private IBookService bookService;

    @Test
    void testGetById(){  //业务层需要打印出来
        System.out.println(bookService.getById(4));
    }

    @Test
    void testSave(){
        Book book = new Book();
        book.setType("测试数据122223");
        book.setName("测试数据123");
        book.setDescrption("测试数据123");
        bookService.save(book);
    }
    @Test
    void testUpdate(){
        Book book = new Book();
        book.setId(9);
        book.setType("测试123aaa");
        book.setName("测试数据123");
        book.setDescrption("测试数据123");
        bookService.updateById(book);
    }
    @Test
    void testDelete(){
        bookService.removeById(12);
    }
    @Test
    void testGetAll(){

        bookService.list();
    }
    @Test
    void testGetPage(){

        IPage<Book> page = new Page<>(2,5);
        bookService.page(page);
    }

}

小结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M32YhdCt-1641018122111)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112282134272.png)]


表现层基础开发

表现层开发

  1. 功能测试

image-20211228234921619

image-20211228234856589

 @Autowired
    private IBookService bookService;

    @GetMapping
    public List<Book> getAll(){
        return bookService.list();
    }
    @PostMapping
    public Boolean save(@RequestBody Book book){
        return bookService.save(book);
    }
    @PutMapping
    public Boolean update(@RequestBody Book book){
        return bookService.modifyBook(book);
    }
    @DeleteMapping("{id}")
    public Boolean delete(@PathVariable Integer id){
        return bookService.delete(id);
    }
    @GetMapping("{id}")
    public Book getById(@PathVariable Integer id){
        return bookService.getById(id);
    }
    @GetMapping("{currentPage}/{pageSize}")
    public IPage<Book> getPage(@PathVariable int currentPage,@PathVariable int pageSize){
        return bookService.getPage(currentPage, pageSize);
    }

小结:

  1. 基于Restful制作表现层接口
  1. 接收参数

表现层数据一致性处理 (R对象)

  1. 设计表现层返回结果的模型类,用于后端与前端进行数据格式统一,也称为前后端数据协议

image-20211229085920651

    @Autowired
    private IBookService bookService;

    @GetMapping
    public R getAll(){

        return new R(true,bookService.list());
    }
    @PostMapping
    public R save(@RequestBody Book book){
        return new R(bookService.save(book));
    }
    @PutMapping
    public R update(@RequestBody Book book){

        return new R(bookService.modifyBook(book));
    }
    @DeleteMapping("{id}")
    public R delete(@PathVariable Integer id){

        return new R(bookService.delete(id));
    }
    @GetMapping("{id}")
    public R getById(@PathVariable Integer id){

        return new R(true,bookService.getById(id));
    }
    @GetMapping("{currentPage}/{pageSize}")
    public R getPage(@PathVariable int currentPage,@PathVariable int pageSize){

        return new R(true,bookService.getPage(currentPage, pageSize));

    }

小结:

image-20211229090052660


前后端调用(axios发送)

前后端协议联调

  1. 前端发送异步请求,调用后端接口

image-20211229093513597

  1. 小结

image-20211229093601203


列表功能

image-20211229094019460

  1. 将查询数据返回到页面,利用前端数据双向绑定进行数据展示

添加功能

  1. 弹出添加窗口

image-20211229104720595

  1. 清除数据

image-20211229104739027

  1. 添加

image-20211229104834111

小结:

image-20211229105423649


删除功能

image-20211229111223849

image-20211229111314361

image-20211229111358563


修改功能 (加载数据)

image-20211229113028345

image-20211229113413794

小结:

image-20211229113437981


修改功能

image-20211229170014348

小结:

image-20211229170044532


异常消息处理

image-20211229173121224

image-20211229173249457

小结:

image-20211229173407149


分页功能

image-20211229194638036

image-20211229194755103

image-20211229194858983

image-20211229194954678

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QoRFWRhc-1641018122120)(https://cdn.jsdelivr.net/gh/1wenjinjie/picture/img/202112291950983.png)]

image-20211229195101807

小结:

image-20211229195138415


分页功能维护

image-20211229200140284


条件查询

  1. 单独封装
  2. 与分页操作混合封装

image-20211229213116776

image-20211229213308428

image-20211229213349133

小结:

image-20211229213457057

标签:Springboot,img,Book,书管,book,防盗链,import,public,详解
来源: https://blog.csdn.net/wenjinjie1/article/details/122267386