@RequestBody注解轻松理解
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);
而最常用的使用请求体参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。并且@RequestBody就是会去解析请求体然后将请求体中的数据映射到我们的对象参数中
前端示例1:
addUserBtn(){
this.$refs.addUserRef.validate(async valid => {
//如果校验失败 则停止数据
if(!valid) return
//console.log(this.addUserModel)
const {data: result} = await this.$http.post('/user/addUser',this.addUserModel)
if(result.status !== 200) return this.$message.error("用户新增失败")
this.$message.success("用户新增成功")
//关闭对话框
this.dialogVisible = false
//重新获取用户列表
this.getUserList()
})
},
后端示例1-1:
@PostMapping("/addUser")
public SysResult addUser(@RequestBody User user){
userService.adduser(user);
return SysResult.success();
}
不加@RequestBody的情况
前端示例2:
queryInfo: {
query: '',
pageNum: 1,
pageSize: 5
},
async getUserList(){
const {data: result} = await this.$http.get('/user/list',{
params: this.queryInfo
})
if(result.status !== 200) return this.$message.error("用户列表查询失败")
this.userList = result.data.rows
this.total = result.data.total
console.log("总记录数:"+this.total)
},
后端示例2-1:
@Override
public PageResult getUserList(PageResult pageResult) {//原始3个参数
//1.定义MP的分页对象
IPage iPage = new Page(pageResult.getPageNum(), pageResult.getPageSize());
//2.构建查询条件构造器
QueryWrapper queryWrapper = new QueryWrapper();
//判断用户数据是否有效 有效true 无效 false
boolean flag = StringUtils.hasLength(pageResult.getQuery());
queryWrapper.like(flag, "username", pageResult.getQuery());
//经过MP分页查询将所有分页数封装到ipage对象中 看源码
iPage = userMapper.selectPage(iPage, queryWrapper); //selectPage MP的分页算法
//从分页对象中获取总记录数
long total = iPage.getTotal();
//从分页对象中获取分页后的结果
List<User> rows = iPage.getRecords();
return pageResult.setTotal(total).setRows(rows); //需要返回的是5个参数
}
PageResult:
@Data
@Accessors(chain = true)
public class PageResult { //定义分页查询对象
private String query; //查询参数
private Integer pageNum; //查询页数
private Integer pageSize; //每页条数
private Long total; //总记录数
private Object rows; //查询结果
}
此处传递过来的queryinfo并不能与对象PageResult 中的参数一一对应,故此处不适合加@RequestBody注解