springboot 如何编写增删改查后端接口,小白极速入门,附完整代码

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<User> 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 结果类型,如果是实体类的话也需要通过指定完整的类路径

DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.robin.springbootscaffold.mapper.UserMapper">

  
  <select id="getAllUsers" resultType="com.robin.springbootscaffold.entity.User">
    select * from user
  select>

  
  <insert id="addUser" >
    insert into user
    (name,password,sex,age,phone)
    values (#{name},#{password},#{sex},#{age},#{phone})
  insert>

  
  <update id="updUserById">
    update user
    set name = #{name},
    sex = #{sex},
    phone = #{phone},
    age = #{age}
    where id = #{id}
  update>

  
  <select id="findUserById" resultType="com.robin.springbootscaffold.entity.User">
    select * from user where id = #{id}
  select>


  
  <delete id="delUserById">
    delete from user where id = #{id}
  delete>
mapper>

编写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<User> 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<User> 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

你可能感兴趣的:(springboot随笔,spring,boot,后端,java)