java - 更新数组列表的最佳实践(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 仍然与新行一起保留在那里。
任何线索将不胜感激。谢谢你。
解决方案
推荐阅读
- .net-core - 如何为控制台应用程序设置 ElmahCore?
- python - 从元组列表中搜索索引
- database - Cassandra:为什么我不必在查询中包含所有分区键?
- c++ - 使用模板有什么好处
比动态分配? - javascript - 将 UTC 时间转换为本地 DST 时间
- r - 在 hexbinplot 上添加直线和文本
- jenkins - Jenkins 共享库无法引用
- android - 将 ImageView 添加到 TableRow 不显示
- python - 使用栈数据结构的随机生成器
- javascript - Phusion 乘客 - SyntaxError:意外的令牌