这个问题困了挺久的。其实连我自己都不知道从什么时候开始,喜欢围绕着功能去思考代码怎么实现,也时常问自己除了这种方法还有其他的方法没有。
要批量新增的是一张中间表,用的方法是mybatis-plus IService类中的saveBatch方法,它是根据实体类对象的集合进行批量新增。因为主键是自增的,所以我只需要获取歌曲id的集合和歌单id。歌单的id可以从歌单页面跳往歌曲页面是传过来,所以我们只需要获取歌曲id的集合。
//这是要批量新增的中间表
public class ListSong implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 歌曲id
*/
private Integer songId;
/**
* 歌单id
*/
private Integer songListId;
}
思考
- axios.post传参
之前我做过的批量删除,那是前端直接传一个数组后端,但现在做的批量新增是不光光要传一个歌曲id集合(把歌曲id集合放到一个数组里)还要传一个歌单的id给前端。这就形成了axios.post要传两个参数到后端。
如上图,每条数据前都有一个小框框,当我们选择多条时会获取选择数据的id的集合。
//这是批量新增的请求
//gg是歌曲id的集合,kk是页面获取的歌单id
//我们要把gg数组和kk传到后端去
//paramsSerializer:是序列化数组
axios.post('http://localhost:8181/list-song/addlistsong',null,{
params:{
gg,kk},paramsSerializer:function (params){
return params.gg.map(_=>`gg=${
_