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

简介: 本文为Spring Boot增删改查接口的小白入门教程,介绍了项目的构建、配置YML文件、代码编写(包括实体类、Mapper接口、Mapper.xml、Service和Controller)以及使用Postman进行接口测试的方法。同时提供了SQL代码和完整代码的下载链接。

构建项目及初始配置

创建项目

在这里插入图片描述

在这里插入图片描述

配置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…

在这里插入图片描述

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。

在这里插入图片描述

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的映射关系)。

在这里插入图片描述

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目录下)

在这里插入图片描述

这里需要注意的是

  1. namespace命名空间,要指定你的mapper接口的完整路径
  2. 增删改查分别对应于四个标签 insert delete update select
  3. 每个sql对应于你的mapper接口中的方法,我们需要通过id去指定你当前的sql是哪个接口方法的
  4. {xxx} 这是mybatis提供的一种占位符,就是之前sql中学的 ? 占位符

  5. resultType 结果类型,如果是实体类的话也需要通过指定完整的类路径
<?xml version="1.0" encoding="UTF-8" ?>
<!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">

  <!--  public List<User> getAllUsers();  -->
  <select id="getAllUsers" resultType="com.robin.springbootscaffold.entity.User">
    select * from user
  </select>

  <!-- 添加用户方法 用户id为自增主键,所以这里我们不需要传入id值  -->
  <insert id="addUser" >
    insert into user
    (name,password,sex,age,phone)
    values (#{name},#{password},#{sex},#{age},#{phone})
  </insert>

  <!-- 根据用户id进行更新操作  -->
  <update id="updUserById">
    update user
    set name = #{name},
    sex = #{sex},
    phone = #{phone},
    age = #{age}
    where id = #{id}
  </update>

  <!--  根据用户id查询用户详情  -->
  <select id="findUserById" resultType="com.robin.springbootscaffold.entity.User">
    select * from user where id = #{id}
  </select>


  <!--  根据id删除用户  -->
  <delete id="delUserById">
    delete from user where id = #{id}
  </delete>
</mapper>

编写service

在这里插入图片描述

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

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

在这里插入图片描述

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的话,去了解一下)

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

查询用户列表

在这里插入图片描述

新增用户

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

在这里插入图片描述

查询单个用户信息

在这里插入图片描述

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

修改用户信息

在这里插入图片描述

删除用户信息

在这里插入图片描述

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)。

在这里插入图片描述

完整代码zip

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

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

小结

在这里插入图片描述

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

相关文章
|
8天前
|
Java 应用服务中间件 数据库连接
SpringBoot入门(2) - SpringBoot HelloWorld
SpringBoot入门(2) - SpringBoot HelloWorld
24 2
SpringBoot入门(2) - SpringBoot HelloWorld
|
19天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
38 4
SpringBoot入门(4) - 添加内存数据库H2
|
8天前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
43 5
|
8天前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
25 4
|
8天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
19 2
 SpringBoot入门(7)- 配置热部署devtools工具
|
19天前
|
Java 应用服务中间件 数据库连接
SpringBoot入门(2) - SpringBoot HelloWorld
SpringBoot入门(2) - SpringBoot HelloWorld
17 2
SpringBoot入门(2) - SpringBoot HelloWorld
|
13天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
54 13
|
8天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
23 4
|
14天前
|
缓存 监控 Java
|
20天前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
本文介绍了如何在Spring Boot项目中实现MVC分层架构,通过将代码划分为controller、service、dao和entity四个部分,实现高内聚低耦合的设计。示例项目包括用户增删查改功能,详细展示了各层的具体实现及运行测试。
30 11

热门文章

最新文章