SpringBoot(一)SpringMvc的自动封装

当前端发给后端的请求参数是JSON时,如下图,在这里插入图片描述
在这里插入图片描述

想用自动封装需要在要封装的类前面加个@RequestBody注解。如路径为group的封装SpecGroup类。
Controller的代码:

	@PostMapping("group")
    public ResponseEntity<Void> saveGroup(@RequestBody SpecGroup specGroup){
        specificationService.saveGroup(specGroup);
        return ResponseEntity.status(HttpStatus.CREATED).build();
    }

Service的代码

	@Transactional
    public void saveGroup(SpecGroup specGroup) {
        groupMapper.insert(specGroup);

    }

但是下图的Brand brand类封装时,在Brand brand前面如果加上了@RequestBody注解反而测试错误,封装Brand类失败。这是因为此时前端发过去的不是JSON而是表单数据,如下图:在这里插入图片描述

在这里插入图片描述

Controller的代码

@PostMapping
public ResponseEntity<Void> saveBrand(Brand brand, @RequestParam("cids") List<Long> cids){
        brandService.saveBrand(brand, cids);
        return ResponseEntity.status(HttpStatus.CREATED).build();
    }

Service的代码

@Transactional
    public void saveBrand(Brand brand, List<Long> cids) {

        // 先新增brand
        brandMapper.insert(brand);

        // 在新增中间表
        for(long cid : cids) {
            brandMapper.insertBrandAndCategory(cid, brand.getId());
        }
    }

总结:前端发的参数是表单数据则不用加@RequestBody,前端发的参数是JSON数据则必须加@RequestBody才能封装成功。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值