瑞吉项目实现修改status字段中遇到的一点问题和补充

一开始百度了解到可以使用LambdaQueryMapper进行查询和修改,可以实现对某一字段的单独修改

这里先查找到前端ids携带的id,再调用LambdaQueryMapper的in方法(查找为该id的套餐的所有信息)

断点测试看到可以拿到数据,同时也发现有status从前端传来(status非常重要),这完成setmealServiceImpl的数据之前就遇到了本次最大的问题(个人觉得),status怎么从前端传进来的

因为不仅要单个修改状态还要批量修改状态controller中接应该用一个泛型为Long的List集合来接id

ids可能传进来多个

应为选中了两个套餐,这里看到逗号后面又多了一个ids

再看这个url,发现问号前面跟了一个1而我此时是点击启售传来的,当我点击停售时则会传来0,如下

因为0停售,1启售,点击停售前端传0,点击启售前端传1,刚好是我们需要修改的值,那这里要拿到这个值。

现在我们来拿这个值,根据url这个controller上方PostMapping路径为

先加个Integer参数尝试接收

不出意外,返回为空

看看前端页面的方法和参数如何封装

可以看到前端已经对status的值进行了逻辑判断,当为表中字段为0则为1,表中字段为1则为0,方便后端拿到合适的参数进行修改(减少后端处理过程),接着进入setmealStatusByStatus方法看一下axios传到后端的参数

combo.js文件中可以看到${params,status}一开始看到这个觉得那就可以拿到status了(前端小白)

于是controller上给参数前面加了@PathVariable和@RequestParam都试了一下(@RequestBody不用应该是没有传json数组进来,不懂...),发现都不行。

百度了下 , 这个url问号后面接的ids是对应params: {ids: params.ids}拼接进来的,而$符号引用的值不能通过注释获取,那么只有把status也拼接到后面才行,这样子拼接出来http://localhost:8080/setmeal/status/1?ids=1638205413276037121&status=1

把status拼接上

清除浏览器缓存后就能得到新的url

接下来就可以用@RequestParam拿到参数了

在service中定义新的方法,在对应的serviceImpl中实现方法调用LambdaUpdateWrapper的set方法最后调用套餐的service的update方法即可修改数据库的status字段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值