簡體   English   中英

如何創建通用的Java程序以僅更新mysql中更改的字段

[英]how to create a general java program to update only the fields that is changed in mysql

我有一個表,其中包含用戶的AddressTable(country,state,city,pincode,phonenumber) ,其中包含值(USA,NY,Bronx,512345,1123456)

當用戶為1個字段或所有字段編輯新值時,如何創建一個Java程序,該程序只能更新已編輯的值。

我不想使用select讀取以前的值,並將它們重新插入未編輯新值的地方。

如何使用單個更新查詢執行此操作,如下所示

void editAddress(String country,String state,String city,String pincode,String phonenumber)
{
 PreparedStatement ps = con.prepareStatement("UPDATE AddressTable set country=?,set state=?,set city=?,set pincode=? ,set phonenumber=? WHERE user=(?)") ;
 ps.setString(1, country);
 ps.setString(2, state);
 ps.setString(3, city);
 ps.setString(4, pincode);
 ps.setString(5, phonenumber);
 ps.setString(6, user);             
 ps.executeUpdate();
}

您可以將值復制到簡單的POJO類中,然后在保存編輯后的值時將其與原始值進行比較。

或者您可以使用Hibernate之類的ORM(對象關系映射器),它應該自動執行。

您可以制作一個可保存每個字段的當前值和上一個值的bean,然后制作一個橫切邏輯(如AspectJ建議),僅在與舊值不同時才保存/更新修改后的值

就像matesuz所說的那樣,只需在客戶端將字段設置為非null即可。 和你的好去!

UPDATE AddressTable set country=IFNULL(?,country),state=IFNULL(?,state),city=IFNULL(?,city),pincode=IFNULL(?,pincode) ,phonenumber=IFNULL(?,phonenumber) WHERE user=(?)

如果此查詢要替換的值為NULL,則字段的值不會更改

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM