mybatis中根据多个Id批量修改数据库内容
先上代码,看是否能解决您的问题
mapper
/**
* 清空购物车
* @param list
* @return
*/
int updateGrouponCartEmpty(@Param("list")List<GrouponCart> list);
service
/**
* 清空购物车
* @param list
* @return
*/
int updateGrouponCartEmpty(@Param("list")List<GrouponCart> list);
/**
* 查询所有购物车商品
* @param grouponCart
* @return
*/
List<GrouponCart> selectGrouponCartList(GrouponCart grouponCart);
serviceImpl
/**
* 清空购物车
* @param list
* @return
*/
@Override
public int updateGrouponCartEmpty(List<GrouponCart> list) {
return baseMapper.updateGrouponCartEmpty(list);
}
/**
* 查询所有购物车商品
* @param grouponCart
* @return
*/
@Override
public List<GrouponCart> selectGrouponCartList(GrouponCart grouponCart) {
QueryWrapper<GrouponCart> queryWrapper=new QueryWrapper<>();
queryWrapper.eq("user_id",grouponCart.getUserId());
queryWrapper.eq("user_type",grouponCart.getUserType());
queryWrapper.eq("deleted",0);
return baseMapper.selectList(queryWrapper);
}
mapper.xml
<!--清空购物车-->
<!--now()获取系统当前时间-->
<update id="updateGrouponCartEmpty">
update `cd_groupon_cart`
set deleted = 1,
update_time = now()
where id in
<foreach collection="list" item="udo" separator="," open="(" close=")">
#{udo.id}
</foreach>
</update>
controller
/**
* 清空购物车
* @param grouponCart
* @return
*/
@RequestMapping("/updateGrouponCartEmpty")
/**
* @LoginUser 自定义注解,验证token
*/
public Object updateGrouponCartEmpty(@LoginUser Integer userId,@RequestBody GrouponCart grouponCart, HttpServletRequest request) {
if (userId == null) {
return new Result(StringConsts.FOUR_HUNDRED,StringConsts.PLEASE_LOG_IN);
}
System.out.println(userId);
grouponCart.setUserId(userId);
List<GrouponCart> grouponCartList = grouponCartService.selectGrouponCartList(grouponCart);
int count=grouponCartService.updateGrouponCartEmpty(grouponCartList);
return Result.getSuccess().setData(count);
}
个人遇到的问题
-
Cannot generate variable name for non-typed Collection parameter type
遇到这个问题是说 “无法为非类型化集合参数类型生成变量名”
在遇到这个问题的时候有查询过资料,有的老哥是说要加泛型,我这边加了泛型也没有解决问题,于是就继续查询解决方法,我最后的解决方法是加了“@RequestParam()”,这个问题就解决了
当然过程并不是这么顺利,刚开始的时候加的是“@RequestBody”这个注解,
然后就出现了第二个问题 -
“Required request body is missing: public java.lang.Object com.modules.controller.DemoController.resetDevice(java.util.List)”
遇到这个问题大概是说,在你的这个这个方法中,缺少请求正文 ,你首先要确定一点,你前台传入的是否为一个json字符串的请求数据,是不是一个对象。
如果像我一样前台传入的只是一个list数组的话应该用@RequestParam()来接收参数。
如果您阅读本文后有一丢丢收获,点赞转发评论收藏,一键三连,谢谢你!