首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 批量插入更新實戰:前端動態表格 + JSON 序列化 + 後端 List 綁定 + 邏輯刪除版本控制

     編輯:Java 相關知識

處理「一對多」表單(如人員-家屬信息)的批量增刪改查是企業級應用高頻場景。本文提供完整棧方案:前端 JSP + jQuery 動態增減行、表單序列化為 JSON、後端 List<Entity> 自動綁定、Service 層邏輯刪除+版本號樂觀鎖,附 Oracle 適配代碼與 $(document).ready vs window.onload 避坑指南。

前端動態表格 (JSP + JS)

  • 初始載入 渲染現有數據,隱藏域攜帶主鍵 SGuid、版本字段。
  • addNewRow() 動態拼接 HTML,索引 personFamilyInfoList[${index}] 確保後端 List 按序綁定。
  • delInsuranceInfo() 僅前端移除行,真實刪除交由後端邏輯判斷。
  • $.serializeArray() 一鍵序列化整個表單,AJAX 提交至 Action。

後端批量新增 (Service)

public boolean addPersonFamilyInfo(List<PersonFamilyInfo> list) {
    for (PersonFamilyInfo info : list) {
        if (info == null) continue;
        info.setSGuid(UUIDHexGenerator.getUUID());
        info.setSUnitGuid("11111111");
        info.setSPersonGuid("0000000");
        info.setIsEnable(0);           // 0-有效
        info.setDOperateDate(new Date());
        info.setDDentifySucessDate(new Date());
        info.setDDentifyLostDate(null); // 失效時間為空
        personFamilyInfoService.saveNeedPk(info);
    }
    return true;
}

後端批量更新(邏輯刪除+版本控制)

  1. 查詢舊數據 oldList。
  2. 逐字段比對 oldList.get(i) vs newList.get(i),任一字段變更標記 changed=true。
  3. 若變更:
    a. 舊記錄歸檔: 複製舊對象,生成新主鍵,IsEnable=1(歷史),DDentifyLostDate=now,save()。
    b. 新記錄激活: 更新對象 IsEnable=0,DDentifySucessDate=now,DDentifyLostDate=null,merge()。
if (changed) {
    PersonFamilyInfo history = new PersonFamilyInfo();
    BeanUtils.copyProperties(old, history);
    history.setSGuid(UUIDHexGenerator.getUUID());
    history.setIsEnable(1);
    history.setDDentifyLostDate(new Date());
    service.save(history); // 歸檔

    newInfo.setIsEnable(0);
    newInfo.setDDentifySucessDate(new Date());
    newInfo.setDDentifyLostDate(null);
    service.merge(newInfo); // 激活
}

JS 載入時機避坑

// 推薦:DOM 就緒即執行,不阻塞圖片等資源
$(function(){ loadCheck(); }); // 等價 $(document).ready()

// 不推薦:需等所有資源加載完
window.onload = function(){ loadCheck(); }

方案已在千萬級用戶系統穩定運行,核心優勢:前後端索引一致性保證、邏輯刪除保留全歷史、版本字段防併發覆蓋、動態行操作零侵入式擴展。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved