批量更新问题

传参如下
[
{“id”:1, “name”:”a”},
{“id”:2, “name”:”b”},
{“id”:3, “name”:”c”}
]
根据每条数据的id修改name的值。如何操作?

讨论数量: 7

我知道是 只能循环 一条一条更新

2个月前 评论
xiaopi

可以使用mysql的insert for upsert语句 INSERT INTO test (id,name) VALUES(1,'a'),(2,'b'),(3,'c') ON DUPLICATE KEY UPDATE name=VALUES(name); 意思是批量插入三个元素,如果有重复的,那就更新name字段。相当于批量更新了 前提必须是:id是主键或者建立了唯一索引

2个月前 评论
小手冰凉 (楼主) 2个月前
xiaopi

这是mysql层面的语句,你可以找下java对应的生成方法

2个月前 评论

这不是JSON对象吗?您可以使用以下方法来根据每条数据的ID修改名称值: 首先,您需要将数据加载到一个变量中。在这种情况下,数据是一个包含三个字典的列表,每个字典代表一个数据项。 data = [ {"id": 1, "name": "a"}, {"id": 2, "name": "b"}, {"id": 3, "name": "c"}] 然后,您可以遍历数据,并使用条件语句检查每个数据项的ID。如果ID与您要修改的ID匹配,则将该数据项的名称更改为新值。 例如,要将ID为1的名称更改为“new_a”,可以执行以下操作: for item in data: if item["id"] == 1: item["name"] = "new_a" 如果您需要对多个数据项进行更改,您可以将条件语句嵌套在一个循环中,或将其封装在一个函数中以便重用。 下面是一个完整的示例,它将ID为2和3的名称更改为“new_b”和“new_c”: data = [ {"id": 1, "name": "a"}, {"id": 2, "name": "b"}, {"id": 3, "name": "c"} ]

def modify_name(data, id, new_name): for item in data: if item["id"] == id: item["name"] = new_name

modify_name(data, 2, "new_b") modify_name(data, 3, "new_c")

print(data)

2个月前 评论
小手冰凉 (楼主) 1个月前
    // 定义要传入的数据
    List<Map<String, Object>> data = new ArrayList<>();
    Map<String, Object> item1 = new HashMap<>();
    item1.put("id", 1);
    item1.put("name", "a");
    data.add(item1);

    Map<String, Object> item2 = new HashMap<>();
    item2.put("id", 2);
    item2.put("name", "b");
    data.add(item2);

    Map<String, Object> item3 = new HashMap<>();
    item3.put("id", 3);
    item3.put("name", "c");
    data.add(item3);

    // 遍历每个元素
    for (Map<String, Object> item : data) {
      // 根据 id 值修改 name 的值
      switch ((int) item.get("id")) {
        case 1:
          item.put("name", "newA");
          break;
        case 2:
          item.put("name", "newB");
          break;
        case 3:
          item.put("name", "newC");
          break;
        default:
          break;
      }
    }

    System.out.println(data); // 输出修改后的数据
  }
1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!