Spring中进行批量操作
有时我们需要执行批量操作,比如说批量删除等,前端只需要将要删除的记录的唯一id作为数组传递,后端可以依次自动生成SQL语句,比一条一条循环执行SQL效率会高很多;
1、定义VO对象:
1 public class IdsVO implements Serializable { 2 private static final long serialVersionUID = -1697074210738638989L; 3 4 private Long[] ids; 5 }
2、Controller中定义:
public Response<Boolean> batchDelete(@ApiParam(value = "ids", required = true) @RequestBody IdsVO ids) { ............
batchUpdate(ids);
}
3、使用LambdaUpdateWrapper生成SQL语句执行:
1 @Override 2 public boolean batchUpdate(KidsVO ids) { 3 LambdaUpdateWrapper<> wrapper = Wrappers.lambdaUpdate(); 4 wrapper.in(::getId, ids.getIds()); 5 6 DataDO dto = new DataDO(); 7 dto.setDelFlag(1); 8 9 return update(dto, wrapper); 10 }
4、调用:
我这里使用PostMan模拟调用,参数以json串的方式传递,示例如下:
1 { 2 "ids": [8, 9, 10] 3 }