用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对象返回前端,这个code
和message
都是固定的。第二个就是把这三个值都交给用户去自定义,然后创建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));
}
}
在这个网址去查所有的增删改查调用api,


重启项目,去测试一下。
在表里手动删掉一条,然后用Apifox
去测试,
建调试的请求。

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

js
{
"code": 200,
"msg": "操作成功",
"data": null
}
这个就是返回了一个Result对象。
修改的:


获取单条的:

列表的 :

删除的:

