newxy 框架 DBM.update(Object dto) 方法採用 **「主鍵存在性」** 判斷操作類型:
<nhtml:form ...> ... </nhtml:form>
formBean。<logic:action1/> 清空 formBean 的 values Map (保留屬性定義)。<logic:action1/> 將選中記錄 put 入 formBean.values,**包含主鍵鍵值對**。BaseDAO dao = new BaseDAO();
DynaDto dto = new DynaDto();
dto.set_table("table1");
dto.set("field1", "值1");
dto.set("field2", "值2");
// 不設 id,框架自動取最大值+1
Object result = dao.update(dto);
// result != null 表示 Insert,可獲取自動生成主鍵
if (result != null) {
Object newId = ((DynaDto) result).get("id");
}
dto.set("id", "100"); // 手動指定
Object result = dao.update(dto);
// 若 100 不存在 → Insert,result != null
// 若 100 已存在 → Update,result == null
dto.set_table("table1");
dto.set("id", "100"); // 必須存在
dto.set("field1", "新值1");
Object result = dao.update(dto);
// result == null 表示 Update
| 操作 | result 返回 | 含義 |
|---|---|---|
| Insert | 非 null (包含生成主鍵的 DynaDto) | 可獲取自動生成主鍵 |
| Update | null | 無額外信息 |
update 不自動開啟事務,批量操作需外層控制。Exception,檢查 SQLException 錯誤碼區分唯一鍵衝突、外鍵違規等。newxy update() 以 **「主鍵是否存在於表中」** 為唯一判斷標準,實現「同一方法雙語義」。開發者只需控制 formBean 中主鍵的有無與值,即可在新增/編輯頁面複用同一提交邏輯,簡化 Controller 代碼。理解此機制,是正確使用 newxy 進行 CRUD 開發的關鍵。