使用RESTful风格对用户信息执行查、增、删的操作
服务器操作用户数据的地址为“/user/{id}”,{id}是用户编号的占位符。
服务器实现以下几个功能:
如果前端向“/user”地址发送GET请求,就返回所有用户的信息。
如果前端向“/user/{id}”地址发送GET请求,服务器返回此id对应的用户信息,如果没有此id的数据就提示“该用户不存在”。
如果前端向“/user/{id}/{name}”地址发送POST请求,就根据{id}和{name}的值创建一个新用户,然后展示当前所有用户的信息。
如果前端向“/user/{id}”地址发送DELETE请求,就删除此id的用户的数据,然后再展示当前所有用户的信息。
实验流程
根据题目要求,数据库需要实现一个用户表,用户表包含用户名和用户id俩个信息。
实验环境 : Windows,mybits-plus,Spring Boot 2.6.3 , MySQL 8.0。
听说 Spring Boot 框架写SQL,有个默认惯例,SQL业务分为四层,pojo层用来创建类映射数据库中的表,Mapper层用来实现一些基本操作,Server层处理一些复杂的业务,Controller 层只管调用Server层即可。
此实验比较简单,不实现Server层了,直接在Controller 层中调用 Mapper 层的操作。
创建用户类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
int id;
String name;
}
实现mapper接口
@Mapper
public interface mapper extends BaseMapper<User> {
}
实现 Controller 层业务
@RestController("/")
public class UserController {
@Autowired
private mapper mpr;
@Autowired
private ResourceUrlProvider mvcResourceUrlProvider;
// 返回所有用户信息
@GetMapping("/user")
public List<User> user() {
List<User> users = mpr.selectList(null);
return users;
}
//返回此id对应的信息,如果不存在则返回“此用户不存在”
@GetMapping("/user/{id}")
public String user(@PathVariable int id) {
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("id", id);
List<User> user = mpr.selectList(qw);
if(user != null) {
return user.toString();
}
return "此用户不存在";
}
//根据id 和 name 创建一个新用户 然后展示所有用户信息
@PostMapping("/user/{id}/{name}")
public List<User> user(@PathVariable int id, @PathVariable String name) {
User user = new User(id,name);
mpr.insert(user);
return mpr.selectList(null);
}
//删除此id的用户数据,然后返回所有用户信息
@DeleteMapping("/user/{id}")
public List<User> delete(@PathVariable int id) {
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("id", id);
mpr.delete(qw);
return mpr.selectList(null);
}
}