[英]How can I update only changed fields in my @Transactional method in Java?
[英]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.