前后端传输数组,mybatis-plus批量添加数据

1.前端封装数据

let arr=[]
res.data.results.forEach(element => {
  let json={
    "id":element.uid,
    "name":element.name,
    "province":element.province,
    "area":element.area,
    "city":element.city,
    "address":element.address,
    "lat":element.location.lat,
    "lng":element.location.lng
  }
  arr.push(json)
  that.setData({
  		array:arr
  		})
});

2.发送请求到后端

wx.request({
      url: 'http://localhost:8080/BD_war_exploded/venues/addBatch',
      data:JSON.stringify(that.data.array),
      dataType:'json',
      method:"POST",
      contentType: 'application/json;charset=utf-8',
      success:res=>{
        console.log(res.data)
      }
    })

3.后端接收数据

 	@PostMapping(value = "addBatch")
    public Response testPost(@RequestBody String[] array) throws IOException {
        List<Venues> venuesList = new ArrayList<Venues>();
        for (String s : array
        ) {
            JSONObject jsonObject = JSONObject.parseObject(s);
            Venues v = new Venues();
            v.setArea(jsonObject.getString("area"));
            v.setAddress(jsonObject.getString("address"));
            v.setProvince(jsonObject.getString("province"));
            v.setLng(jsonObject.getString("lng"));
            v.setCity(jsonObject.getString("city"));
            v.setName(jsonObject.getString("name"));
            v.setId(jsonObject.getString("id"));
            v.setLat(jsonObject.getString("lat"));
            venuesList.add(v);
        }
        boolean flag = service.saveBatch(venuesList);
        if (flag) {
            return new Response(200, true, "批量上传成功", null);
        }
        return new Response(201, false, "批量上传失败", null);
    }

注意事项
1.使用String[]接收
2.将String类型数据转为json对象
3.在使用List.add()方法时,如果要添加的参数在for循环外部实例化,那么每次引入的都是同一个内存地址,就会造成添加到数组里的都是最后一个对象,所以需要在for循环内部声明并创建新的类对象即可。

如何取json对象里的数组

 //取出json对象里的数组
 JSONArray photos = jsonObject.getJSONArray("photos");
 //创建StringBuilder对象
 StringBuilder sb = new StringBuilder();
 //for循环读取数组,并赋值给sb
 for (int i = 0; i < photos.size(); i++) {
     JSONObject object = JSON.parseObject(photos.getString(i));
     String url = object.getString("url");
     if (sb.length() > 0) {//该步即不会第一位有逗号,也防止最后一位拼接逗号!
         sb.append(",");
     }
     sb.append(url);
 }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatis-Plus提供了批量插入的方法,我们可以使用它来实现前后端批量插入。 后端代码: 1.在实体类中添加@TableField注解,用于标识不是数据库表中的字段,但是需要插入的字段。 ``` @Data public class User { @TableId(value = "id", type = IdType.AUTO) private Long id; @TableField(value = "name") private String name; @TableField(value = "age") private Integer age; } ``` 2.在Mapper接口中添加批量插入方法。 ``` public interface UserMapper extends BaseMapper<User> { void insertBatch(@Param("list") List<User> list); } ``` 3.在ServiceImpl中实现批量插入方法。 ``` @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Override public void insertBatch(List<User> list) { baseMapper.insertBatch(list); } } ``` 前端代码: 1.在前端页面中创建一个表单,用于输入需要批量插入的数据。 ``` <form id="form"> <input type="text" name="name" placeholder="姓名"> <input type="text" name="age" placeholder="年龄"> <button type="button" onclick="insertBatch()">批量插入</button> </form> ``` 2.在前端js代码中,使用ajax向后端发送批量插入请求。 ``` function insertBatch() { var list = []; $("#form input").each(function () { var name = $(this).attr("name"); var value = $(this).val(); var obj = {}; obj[name] = value; list.push(obj); }); $.ajax({ url: "/user/insertBatch", type: "post", contentType: "application/json;charset=utf-8", data: JSON.stringify(list), success: function (res) { if (res.code === 200) { alert("批量插入成功"); } else { alert("批量插入失败"); } } }); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值