一开始百度了解到可以使用LambdaQueryMapper进行查询和修改,可以实现对某一字段的单独修改
![](https://i-blog.csdnimg.cn/blog_migrate/d1e56e6459abec20c0ba83c579aad086.png)
这里先查找到前端ids携带的id,再调用LambdaQueryMapper的in方法(查找为该id的套餐的所有信息)
![](https://i-blog.csdnimg.cn/blog_migrate/fac40bf5ab17336de9ef183398744949.png)
断点测试看到可以拿到数据,同时也发现有status从前端传来(status非常重要),这完成setmealServiceImpl的数据之前就遇到了本次最大的问题(个人觉得),status怎么从前端传进来的
因为不仅要单个修改状态还要批量修改状态controller中接应该用一个泛型为Long的List集合来接id
![](https://i-blog.csdnimg.cn/blog_migrate/f512f06d5799f3fbd1cb6809cc15bd83.png)
ids可能传进来多个
![](https://i-blog.csdnimg.cn/blog_migrate/d264ae8c165efb16bbdab1125a357241.png)
应为选中了两个套餐,这里看到逗号后面又多了一个ids
再看这个url,发现问号前面跟了一个1而我此时是点击启售传来的,当我点击停售时则会传来0,如下
![](https://i-blog.csdnimg.cn/blog_migrate/f04b98b97fbf09ee97466fb6a9253dca.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7bfae91e8db500b1a0738f167d675331.png)
因为0停售,1启售,点击停售前端传0,点击启售前端传1,刚好是我们需要修改的值,那这里要拿到这个值。
现在我们来拿这个值,根据url这个controller上方PostMapping路径为
![](https://i-blog.csdnimg.cn/blog_migrate/35dbe8cd206826ad74b0c5b6808a72fa.png)
先加个Integer参数尝试接收
![](https://i-blog.csdnimg.cn/blog_migrate/0a36ec633d099256f3c51ec638385e6d.png)
不出意外,返回为空
![](https://i-blog.csdnimg.cn/blog_migrate/9a82a8ea38ec7faf95681d765f8e1ad0.png)
看看前端页面的方法和参数如何封装
![](https://i-blog.csdnimg.cn/blog_migrate/1d46cf425939289d87946a55982d3ebc.png)
可以看到前端已经对status的值进行了逻辑判断,当为表中字段为0则为1,表中字段为1则为0,方便后端拿到合适的参数进行修改(减少后端处理过程),接着进入setmealStatusByStatus方法看一下axios传到后端的参数
![](https://i-blog.csdnimg.cn/blog_migrate/8398a89ab2d2b9dde116b2b28b6b8284.png)
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
![](https://i-blog.csdnimg.cn/blog_migrate/8bf4ece8d743074c5bda6fca88b263d3.png)
把status拼接上
![](https://i-blog.csdnimg.cn/blog_migrate/e0fb87a668f525396a854c76528f7ea0.png)
清除浏览器缓存后就能得到新的url
![](https://i-blog.csdnimg.cn/blog_migrate/4b5b40b5951bb7245b8c5ab35cbac286.png)
接下来就可以用@RequestParam拿到参数了
![](https://i-blog.csdnimg.cn/blog_migrate/50bcaaecc6d142c3076dd027ad471e51.png)
在service中定义新的方法,在对应的serviceImpl中实现方法调用LambdaUpdateWrapper的set方法最后调用套餐的service的update方法即可修改数据库的status字段
![](https://i-blog.csdnimg.cn/blog_migrate/347da7d42c4f49b4e7a3867138426973.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1a4976439d88fc229974a495562d047f.png)