成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

解決springjpa的局部更新字段問題

瀏覽:3日期:2023-07-24 13:07:18
問題描述:

使用springjpa更新數(shù)據(jù)時,有時候我們需要更新部分字段,對已有的內(nèi)容保持不變,通常我們可以通過Spring提供的bean工具類BeanUtils來實現(xiàn)

解決方法:

BeanUtils復(fù)制對象,BeanUtils中的構(gòu)造方法屬性中可以通過傳入更新時忽略的屬性值來實現(xiàn)選擇性復(fù)制原對象的字段。更新部分字段時,我們僅需要傳入復(fù)制后的字段即可。

解析和實現(xiàn):

BeanUtils的構(gòu)造方法:

具體更新部分字段的步驟:

查詢出待更新對象的原有信息

通過傳入的更新的象去復(fù)制產(chǎn)生一個新對象,其中新對象中為null的字段不需要更新。

執(zhí)行更新操作,操作對象時步驟2得出的復(fù)制對象。

代碼如下:

public Result update(@RequestBody AppScene appScene, @PathVariable String id ){ AppScene target = appSceneService.findById(id); //數(shù)據(jù)庫查出待更新對象 BeanUtils.copyProperties(appScene,target,getNullPropertyNames(appScene)); //使用更新對象的非空值去覆蓋待更新對象 appSceneService.update(target ); //執(zhí)行更新操作 return new Result(true,StatusCode.OK,'修改成功');}

其中涉及的getNullPropertyNames方法作為工具類存在,具體如下:

public static String[] getNullPropertyNames (Object source) { final BeanWrapper src = new BeanWrapperImpl(source); java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors(); Set<String> emptyNames = new HashSet<String>(); for(java.beans.PropertyDescriptor pd : pds) { Object srcValue = src.getPropertyValue(pd.getName()); if (srcValue == null) emptyNames.add(pd.getName()); } String[] result = new String[emptyNames.size()]; return emptyNames.toArray(result); }更新:

這是之前剛開始學(xué)習(xí)框架的時候遇到的問題,其實這個問題spring早就提供了對應(yīng)的方法去解決,它提供了對應(yīng)bean拷貝的方法BeanUtils.copyProperties,通過傳入不同的值決定是否要忽略非空屬性值的拷貝,現(xiàn)在已經(jīng)沒有必要自己手寫了。

補充:Java Jpa選擇性更新、部分字段更新工具類

使用Jpa自帶的Save方法更新實體類時,會覆蓋數(shù)據(jù)庫中實體類原有內(nèi)容。如果我們只想更新一部分字段或是選擇性的更新,就只能另辟蹊徑了。

這個工具類很好地彌補了這個不足,對于待更新實體類中有內(nèi)容的字段會更新,為空的字段會采用原數(shù)據(jù)庫中內(nèi)容,下面是工具類代碼(附使用方法)。

工具類代碼:

import org.springframework.beans.BeanWrapper;import org.springframework.beans.BeanWrapperImpl;import java.util.HashSet;import java.util.Set;/** * jpa 部分字段更新方法 */public class UpdateColumnUtil { public static String[] getNullPropertyNames(Object source) { final BeanWrapper src = new BeanWrapperImpl(source); java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors(); Set<String> emptyNames = new HashSet<>(); for (java.beans.PropertyDescriptor pd : pds) { Object srcValue = src.getPropertyValue(pd.getName()); if (srcValue == null) emptyNames.add(pd.getName()); } String[] result = new String[emptyNames.size()]; return emptyNames.toArray(result); }}使用方法:

//首先從數(shù)據(jù)庫查出待更新對象Customer target = customerService.findById(customer.getCustId());//使用更新對象的非空值去覆蓋待更新對象BeanUtils.copyProperties(customer, target, UpdateColumnUtil.getNullPropertyNames(customer));//執(zhí)行更新操作save = customerService.save(target);

這樣一個映射就完成我們的需求了。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽: Spring
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲精品一级| 国内视频一区| 欧美日产一区二区三区在线观看| 欧美日韩日日骚| 亚洲mv在线观看| 日韩一级欧洲| 成人免费在线视频观看| 国产精品vip| 日韩一二在线观看| 日本91福利区| 日本精品一区二区三区四区的功能| 亚洲图片欧美视频| 亚洲一区在线免费| 亚洲第一在线综合网站| 亚洲欧美日本视频在线观看| 亚洲免费色视频| 韩国亚洲精品| 国产精品久久久久桃色tv| 欧美精品亚洲| 国产肉丝袜一区二区| 91在线你懂得| 精品免费视频.| 国产传媒一区在线| 欧美人体做爰大胆视频| 免费亚洲电影在线| 在线中文字幕一区二区| 日韩精品三区四区| 色一情一乱一乱一91av| 日韩在线一区二区三区| 免费在线播放第一区高清av| 一区二区成人在线| 久久婷婷麻豆| 蜜臀av性久久久久蜜臀aⅴ流畅| 一本色道久久加勒比精品| 日韩激情视频网站| 日本久久精品电影| 精品在线观看免费| 日韩一区二区免费在线电影| 国产黄色91视频| 欧美大白屁股肥臀xxxxxx| 成人精品小蝌蚪| 久久在线免费观看| 国语精品一区| 一区二区日韩av| 久久成人资源| 秋霞电影网一区二区| 欧美三级电影一区| 成人精品鲁一区一区二区| 国产日韩视频一区二区三区| 亚洲小说欧美另类社区| 亚洲福利一区二区| 欧美色老头old∨ideo| 国产成人免费在线视频| 欧美电视剧在线看免费| 91老师片黄在线观看| 18涩涩午夜精品.www| 国产精品日韩欧美一区| 免费在线看一区| 精品国产一区二区三区av性色| 欧美不卡视频| 亚洲乱码中文字幕综合| 玖玖国产精品视频| 国产精品一区久久久久| 久久久99精品久久| 国产精品久久久亚洲一区| 奇米777欧美一区二区| 日韩欧美中文字幕公布| 欧美日韩亚洲一区二区三区四区| 国产精品你懂的在线| 99精品国产高清一区二区| 日韩福利视频导航| 精品久久五月天| 亚洲小说区图片区| 视频一区二区中文字幕| 日韩一区二区电影网| 亚洲婷婷免费| 日韩二区三区四区| 久久亚洲影视婷婷| 在线综合亚洲| 国产精品一区二区久久不卡| 国产精品美女久久久久久久久 | 亚洲欧洲成人av每日更新| 老司机久久99久久精品播放免费| 高清在线不卡av| 亚洲欧美另类久久久精品| 欧美日韩国产影片| 国产精品v欧美精品∨日韩| 舔着乳尖日韩一区| 久久久综合精品| 六月天综合网| youjizz久久| 亚洲国产日韩a在线播放性色| 欧美成人免费网站| 午夜亚洲精品| 成人小视频免费在线观看| 中文字幕一区二区三区精华液 | aa级大片欧美三级| 国产资源精品在线观看| 日韩一区欧美一区| 欧美三级欧美一级| 影音先锋一区| 国产福利精品导航| 日韩欧美中文一区二区| 亚洲午夜精品国产| 精品亚洲成a人在线观看| 国产日韩av一区| 色成年激情久久综合| 91麻豆成人久久精品二区三区| 日本不卡在线视频| 国产精品国产三级国产aⅴ入口| 在线免费观看视频一区| 黄色日韩在线| 国内精品国产成人| 亚洲日本丝袜连裤袜办公室| 91精品国产手机| 久久精品二区三区| 欧美日韩天天操| 国产精品99久久久久久久女警| 亚洲综合精品自拍| 精品国产一区二区国模嫣然| 亚洲综合日韩| 欧美一区二区三区久久精品茉莉花| 天天综合日日夜夜精品| 国产喂奶挤奶一区二区三区| 欧美视频在线一区| 夜夜嗨网站十八久久| 9人人澡人人爽人人精品| 美国av一区二区| 亚洲伊人伊色伊影伊综合网| 久久久噜噜噜久噜久久综合| 欧美老年两性高潮| 99亚洲精品| 99re视频这里只有精品| 国产在线不卡一区| 一区二区三区在线观看视频| 久久精品亚洲乱码伦伦中文| 777精品伊人久久久久大香线蕉| 91久久综合| 不卡一区中文字幕| 日韩1区2区日韩1区2区| 欧美国产亚洲另类动漫| 欧美日本精品一区二区三区| 在线一区日本视频| 欧美不卡在线| 国产一区中文字幕| 一区二区三区国产| 久久久综合视频| 欧美日韩精品一二三区| 国产午夜精品一区二区三区欧美 | 亚洲少妇屁股交4| 精品成人在线观看| 欧美三级在线视频| 国产精品日韩一区二区| 国模吧视频一区| 成人高清在线视频| 极品美女销魂一区二区三区 | 中文字幕一区在线观看| 日韩一级免费一区| 久久久av水蜜桃| 91久久国产综合久久蜜月精品| 91在线一区二区| 国产成人精品亚洲777人妖| 美脚の诱脚舐め脚责91| 亚洲精品第1页| 国产精品理伦片| 日韩美女一区二区三区四区| 欧美日韩国产首页在线观看| 国产一区白浆| 在线精品亚洲| 欧美日韩精品伦理作品在线免费观看| 成人精品鲁一区一区二区| 国产成人高清视频| 国产精品系列在线观看| 久久av老司机精品网站导航| 男人的j进女人的j一区| 日韩高清欧美激情| 天天色图综合网| 婷婷久久综合九色综合伊人色| 亚洲第一在线综合网站| 亚洲成人精品一区二区| 亚洲成人综合视频| 视频一区视频二区中文| 日韩—二三区免费观看av| 全部av―极品视觉盛宴亚洲| 久久精品999| 精品一区二区三区蜜桃| 国产一区不卡视频| 国产91综合一区在线观看| 国产一区二区三区免费看| 久久精品国产久精国产| 国内精品免费在线观看| 国产成人精品三级麻豆| av一区二区三区黑人| 成人免费视频一区| av电影天堂一区二区在线观看| 99精品视频在线观看| 97久久人人超碰| 国产一区视频在线观看免费| 亚洲精品自在在线观看| 免费久久久一本精品久久区 |