springboot 如何编写增删改查后端接口,小白极速入门,附完整代码
作者:mmseoamin日期:2024-04-27

springboot 增删改查接口,小白极速入门

  • 构建项目及初始配置
    • 创建项目
    • 配置yml配置文件
    • 创建不同的包 controller,service,mapper,entity...
    • 编写代码
      • 编写实体类 User
      • 编写mapper接口
      • 编写mapper.xml(Resource目录下)
      • 编写service
      • 编写controller
      • 接口测试,使用postman
        • 查询用户列表
        • 新增用户
        • 查询单个用户信息
        • 修改用户信息
        • 删除用户信息
        • SQL代码
        • 完整代码zip
        • 小结

          构建项目及初始配置

          创建项目

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第1张

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第2张

          配置yml配置文件

          tips: 默认是application.properties,自己再新建一个application.yml即可

          server:
            port: 8088 #自己喜欢哪个端口用哪个
          spring:
            datasource:
              driver-class-name: com.mysql.cj.jdbc.Driver
              url: jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT%2b8 #改成自己的数据库
              username: root # 改成自己的mysql用户
              password: root # 改成自己的密码
          mybatis:
            mapper-locations: classpath:mapper/*.xml
          

          创建不同的包 controller,service,mapper,entity…

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第3张

          tips:注意包的位置,别放错了。创建包:右键点击new package即可。

          1. controller 对应控制器,用于对接接口的映射
          2. service 用于业务处理(当然目前的这个小demo非常简单,只作用于一个传递的功能)
          3. mapper 就是一些增删改查的接口
          4. entity 实体类,数据库中的每一张表对应于一个实体类(当然,可以有更详细的vo,bo之类的,只不过当前的demo比较简单,就一个数据库对应一个实体类啦)
          5. resource/mapper 用于编写实际sql的xml的地方

          编写代码

          编写实体类 User

          在包entity下,创建User类,然后提供与数据库对应的字段作为属性,我这边使用lombok提供的注解(对应的getter和setter以及有参无参构造器和toString方法),其实就是传统的javabean。

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第4张

          package com.robin.springbootscaffold.entity;
          import lombok.AllArgsConstructor;
          import lombok.Data;
          import lombok.NoArgsConstructor;
          import lombok.ToString;
          @Data
          @NoArgsConstructor
          @AllArgsConstructor
          @ToString
          public class User {
              private int id;
              private String name;
              private String password;
              private String sex;
              private int age;
              private String phone;
          }
          

          编写mapper接口

          这里因为是入门嘛,所以就直接对应一张表的crud,增删改查,以及一个列表查询,然后左侧的小鸟是装了一个mybatis的插件(它可以帮助提示,你的每个mapper接口和mapper.xml的映射关系)。

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第5张

          package com.robin.springbootscaffold.mapper;
          import com.robin.springbootscaffold.entity.User;
          import org.apache.ibatis.annotations.Mapper;
          import org.apache.ibatis.annotations.Param;
          import java.util.List;
          @Mapper
          public interface UserMapper {
              List getAllUsers();
              int addUser(User user);
              int updUserById(User user);
              User findUserById(@Param("id") int id);
              int delUserById(@Param("id") int id);
          }
          

          编写mapper.xml(Resource目录下)

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第6张

          这里需要注意的是

          1. namespace命名空间,要指定你的mapper接口的完整路径
          2. 增删改查分别对应于四个标签 insert delete update select
          3. 每个sql对应于你的mapper接口中的方法,我们需要通过id去指定你当前的sql是哪个接口方法的
          4. #{xxx} 这是mybatis提供的一种占位符,就是之前sql中学的 ? 占位符
          5. resultType 结果类型,如果是实体类的话也需要通过指定完整的类路径
          
          
          
            
            
            
            
              insert into user
              (name,password,sex,age,phone)
              values (#{name},#{password},#{sex},#{age},#{phone})
            
            
            
              update user
              set name = #{name},
              sex = #{sex},
              phone = #{phone},
              age = #{age}
              where id = #{id}
            
            
            
            
            
              delete from user where id = #{id}
            
          
          

          编写service

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第7张

          每个方法基本是见名知意,我就不一一注释了。

          package com.robin.springbootscaffold.service;
          import com.robin.springbootscaffold.entity.User;
          import com.robin.springbootscaffold.mapper.UserMapper;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.stereotype.Service;
          import java.util.List;
          @Service
          public class UserService {
              @Autowired
              private UserMapper userMapper;
              public List getAllUsers(){
                  return  userMapper.getAllUsers();
              }
              public int addUser(User user){
                  return userMapper.addUser(user);
              }
              public int updUserById(User user){
                  return userMapper.updUserById(user);
              }
              public User findUserById(int id){
                  return userMapper.findUserById(id);
              }
              public int delUserById(int id){
                  return userMapper.delUserById(id);
              }
          }
          

          编写controller

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第8张

          package com.robin.springbootscaffold.controller;
          import com.robin.springbootscaffold.entity.User;
          import com.robin.springbootscaffold.service.UserService;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.web.bind.annotation.*;
          import java.util.List;
          @RestController
          @RequestMapping("/user")
          public class UserController {
              @Autowired
              private UserService userService;
              @GetMapping("/list")
              public List getAllUsers(){
                  return  userService.getAllUsers();
              }
              @PostMapping("/add")
              public int addUser(@RequestBody User user){
                  return userService.addUser(user);
              }
              @PutMapping("/upd")
              public int updUserById(@RequestBody User user){
                  return userService.updUserById(user);
              }
              @GetMapping("/find/{id}")
              public User findUserById(@PathVariable("id") int id){
                  return userService.findUserById(id);
              }
              @DeleteMapping("/delete/{id}")
              public int delUserById(@PathVariable("id") int id){
                  return userService.delUserById(id);
              }
          }
          

          首先解释一下 @RestController 这个注解,可以将你的每个接口的返回值转换为一个json,@RequestMapping 用于指定接口的映射规则,这个的话,接着往下看就明白啦。

          然后 @GetMapping @DeleteMapping @PutMapping @PostMapping 都是 @RequestMapping 的衍生注解,分别对应不同的请求方式,然后有一些细节是不同的,这里不做过多的描述。

          如果 @RequestBody @PathVariable 这两个注解不懂的话,可以看我的这篇文章 springbootWeb常用注解使用

          接口测试,使用postman

          启动项目,然后使用postman测试接口(如果没使用过postman的话,去了解一下)

          注意观察每个接口的请求方式,以及请求的参数和请求体

          查询用户列表

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第9张

          新增用户

          因为我们controller中使用的是@RequestBody注解 ,所以使用postman发送请求的话需要选择body->row,然后以json的数据格式发送。

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第10张

          查询单个用户信息

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第11张

          路径变量,就是在/后面多加一个变量,用于保存一些信息,然后使用@PathVarible注解就可以获取到对应的变量的值。

          修改用户信息

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第12张

          删除用户信息

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第13张

          SQL代码

          SET NAMES utf8mb4;
          SET FOREIGN_KEY_CHECKS = 0;
          -- ----------------------------
          -- Table structure for user
          -- ----------------------------
          DROP TABLE IF EXISTS `user`;
          CREATE TABLE `user`  (
            `id` int(0) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
            `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '姓名',
            `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '密码',
            `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '性别',
            `age` int(0) NULL DEFAULT NULL COMMENT '年龄',
            `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '电话',
            PRIMARY KEY (`id`) USING BTREE
          ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic;
          -- ----------------------------
          -- Records of user
          -- ----------------------------
          INSERT INTO `user` VALUES (1, '张三', '123456', '男', 25, '18888889999');
          INSERT INTO `user` VALUES (3, 'robin', '123456', '男', 22, '14424567789');
          SET FOREIGN_KEY_CHECKS = 1;
          

          数据库比较简单,考虑到小白,我直接贴sql代码了(数据库名为springboot,表名为user)。

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第14张

          完整代码zip

          这个demo的完整代码,我已经上传到了百度网盘需要的直接下载就行

          链接: https://pan.baidu.com/s/1gghcUrajoMDpAQbEnfOOuw 提取码: 41xs

          小结

          springboot 如何编写增删改查后端接口,小白极速入门,附完整代码,在这里插入图片描述,第15张

          后续看情况,可以做一下前后端分离的小demo