用SpringMvc,实现,增删改查,api接口

spring mvc实现 增删改查 的api接口。

先创建控制类:

control包文件夹里面创建名为UserController

java 复制代码
// UserController.java
package com.example.demo.controller;

public class UserController {
}

要用restful注解去修饰

java 复制代码
// UserController.java
package com.example.demo.controller;

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

@RestController
public class UserController {
}

用requestMapping定义当前类的访问路径

java 复制代码
// UserController.java
package com.example.demo.controller;

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

@RestController
@RequestMapping("/user")
public class UserController {
}

给前端返回同样类型的对象,便于前端判断和处理数据。 那么这个对象对应的类就叫做统一返回结果类。

先在项目中创建common包(就是在com.example.demo创建common文件夹),

再来,在common文件夹下面创建result类

java 复制代码
// Result.java
package com.example.demo.common;

public class Result {

}

类里面的内容,粘贴代码如下:

java 复制代码
import java.io.Seializable;

/**
 * 返回统一结果类
 */
@Data
public class Result implements Serializable {
  private static final long serialVersionUID = 1L;
  // 状态码
  private int code;
  // 提示信息message
  private String msg;
  // 返回的属性类型
  private Object data;
  
  /**
   * 直接返回成功结果
   * @param data
   * @return
   */
  public static Result success(Object data) {
    return success(code: 200, msg: '操作成功', data);
  }
  
  /**
   * 自定义返回成功结果
   * @param code
   * @param msg
   * @param data
   * @return
   */
  public static Result success(int code, String msg, Object data) {
    Result r = new Result();
    r.setCode(code);
    r.setMsg(msg);
    r.setData(data);
    return r;
  }
  
  /**
   * 直接返回失败信息
   * @return
   */
  public static Result error() {
    return error(code: 400, msg: "操作失败", data: null);
  }
  
  /**
   * 带参数返回失败信息
   * @param msg
   * @return
   */
  public static Result error(String msg) {
    return error(code: 400, msg, data: null);
  }
  
  /**
   * 自定义返回失败信息
   * @param code
   * @param msg
   * @param data
   * @return
   */
  public static Result error(int code, String msg, Object data) {
    Result r = new Result();
    r.setCode(code);
    r.setMsg(msg);
    r.setData(data);
    return r;
  }
}

可以使用这些静态方法去进行创建对象。比如success方法,把data数据也就是要返回的数据放到success的参数,就会创建带有结果的result对象返回前端,这个codemessage都是固定的。第二个就是把这三个值都交给用户去自定义,然后创建result对象返回,第三个的话就是没有返回结果,直接返回一个result对象,这个比较适合不需要向前端传值的时候。

error方法也差不多,只是成功的时候返回的这个状态码默认是200,失败的时候返回的状态码默认是400,方便交给前端进行判断。

我们就可以写API接口方法了。

打开UserController

java 复制代码
// UserController.java
package com.example.demo.controller;

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

@RestController
@RequestMapping("/user")
public class UserController {
}

userService对象注入进来,用@outwhite注解或者@source注解都可以,

java 复制代码
// UserController.java
package com.example.demo.controller;

import com.example.demo.common.Result;
import com.example.demo.entity.USer;
import com.example.demo.service.UserService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController {
  @Resource
  private UserService userService;
  
  /**
   * 新增用户
   * @param user
   * @return
   */
  @PostMapping
  public Result save(@RequestBody User user) {
    userService.save(user);
    return Result.success();
  }
}

通过@Resource注入进去不需要通过new的方式去创建对象了。

使用@PostMapping注解进行标识。返回的类型都使用Result,以后常见的方法都会统一使用这个Result进行返回。post使用的数据它床底的是这个请求体。需要在这个request body注解进行标识。要保存的话,就用userService.save()方法进行保存就可以了。只要userService.save(user)这行代码没出错,就说明保存成功了。

新增和修改就不需要给前端传什么结果了。直接传一个没有结果的result对象给前端就可以了。直接返回Result的这个success方法。(它创建了一个没有结果的result对象)。

接着写修改的方法:

java 复制代码
// UserController.java
package com.example.demo.controller;

import com.example.demo.common.Result;
import com.example.demo.entity.USer;
import com.example.demo.service.UserService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController {
  @Resource
  private UserService userService;
  
  /**
   * 新增用户
   * @param user
   * @return
   */
  @PostMapping
  public Result save(@RequestBody User user) {
    userService.save(user);
    return Result.success();
  }
  
  /**
   * 修改用户
   * @param user
   * @return
   */
  @PutMapping
  public Result update(@RequestBody User user) {
    userService.udpateById(user);
    return Result.success();
  }
}

修改和新增的方法差不多,只是userService的api调用的方法不一样。

接着就是查询单条记录的:

java 复制代码
// UserController.java
package com.example.demo.controller;

import com.example.demo.common.Result;
import com.example.demo.entity.USer;
import com.example.demo.service.UserService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController {
  @Resource
  private UserService userService;
  
  /**
   * 新增用户
   * @param user
   * @return
   */
  @PostMapping
  public Result save(@RequestBody User user) {
    userService.save(user);
    return Result.success();
  }
  
  /**
   * 修改用户
   * @param user
   * @return
   */
  @PutMapping
  public Result update(@RequestBody User user) {
    userService.udpateById(user);
    return Result.success();
  }
  
  /**
   * 查询单条记录
   * @param id
   * @return
   */
  @GetMapping("/{id}")
  public Result getOne(@PathVariable Long id) {
    return Result.success(userService.getById(id));
  }
  
  /**
   * 查询所有记录
   * @return
   */
  @GetMapping()
  public Result getList() {
    return Result.success(userService.list());
  }
  
  /**
   * 删除单条记录
   * @param id
   * @return
   */
  @DeleteMapping("/{id}")
  public Result delete(@PathVariable Long id) {
    return Result.success(userService.deleteById(id));
  }
}

baomidou.com/guides/data...

在这个网址去查所有的增删改查调用api,

重启项目,去测试一下。

在表里手动删掉一条,然后用Apifox去测试,

建调试的请求。

新增和修改,需要传入json格式的字符串,

js 复制代码
{
  "code": 200,
  "msg": "操作成功",
  "data": null
}

这个就是返回了一个Result对象。

修改的:

获取单条的:

列表的 :

删除的:

相关推荐
小蜗牛编程实录7 小时前
MAT分析内存溢出- ShardingSphere JDBC的缓存泄露问题
后端
用户68545375977698 小时前
🚀 Transformer:让AI变聪明的"读心术大师" | 从小白到入门的爆笑之旅
人工智能·后端
深圳蔓延科技8 小时前
SpringSecurity中如何接入单点登录
后端
刻意思考8 小时前
服务端和客户端之间接口耗时的差别
后端·程序员
该用户已不存在8 小时前
Python项目的5种枚举骚操作
后端·python
zjjuejin8 小时前
Maven 云原生时代面临的八大挑战
java·后端·maven
木易士心8 小时前
设计模式六大原则 — 列举反例详解各个原则的核心思想和意义
后端
间彧8 小时前
Java Optional类详解与应用实战
后端
用户8356290780518 小时前
告别冗余:用Python删除PDF中的超链接
后端·python