首页 > 解决方案 > 更新数组列表的最佳实践(Java/Spring Boot)

问题描述

我的目标是我想将arraylist上的一些数据更新到数据库中,假设我有这样的数据:

表:交易字段:id(长),desc(字符串),价格(长)

第 1 行:1,ABC,1000 || 第 2 行:2,ZXC,2000

然后当我点击 GET API 时,json 将是这样的:

    "transaction": [
   {
      "id": 1,
      "desc": "ABC",
      "price": 1000
    },
    {
      "id": 2,
      "desc": "ZXC",
      "price": 2000
    }]

然后我需要根据用户操作更新该列表,例如用户删除 ID 为 1 的第一行并添加新事务,所以如果我点击我的 SAVE API(JPA 保存操作),json 将是这样的:

"transaction": [
        {
          "id": 2,
          "desc": "ZXC",
          "price": 2000
        },
         {
          "id": 0, --> will be auto generated since it using identity generation
          "desc": "AAA",
          "price": 3333
        }]

我的问题是,而是删除 id 1 并创建 id 为 3 的新行,当它保存到 db 时,它将创建 2 个新行(ID:3),包括 ID 为 2 的数据(但这将创建一个具有相同值和新的新记录编号:4)。所以总行最终将是4。

这是我目前的逻辑:

void prepareTransaction(TransactionDto dto) {
        ArrayList<TransactionModel> tmArr= new ArrayList<>();
        for (int i=0; i<=dto.getTransaction().size()-1; i++) {
            TransactionModel tm = new ElemenTransaksi();
            tm.setDesc(dto.getDesc());
            tm.setPrice(dto.getPrice());
            tmArr.add(tm);
        }
        repo.saveAll(tmArr); 
}

目前我在运行迭代以收集json数据的方法之前尝试了一个新逻辑,我正在使用删除操作,因此它将清除整个数据库,然后根据上面的json插入新列表,是的,也许它作为我的运行希望,但是这种方法将为所有数据创建新的 id,我希望所有以前的 id 仍然与新行一起保留在那里。

任何线索将不胜感激。谢谢你。

标签: javalistspring-bootapiarraylist

解决方案


推荐阅读