欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JPA save()方法將字段更新為null的解決方案

 更新時(shí)間:2020年01月21日 09:24:37   作者:King-D  
這篇文章主要介紹了JPA save()方法將字段更新為null的解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了JPA save()方法將字段更新為null的解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

今天在開發(fā)上碰到一個(gè)問題,在做頁面展示的時(shí)候傳給前端十個(gè)字段,前端修改了其中3個(gè)的值,所以只傳了3個(gè)值給后端,其余字段默認(rèn)為null,更新后其他7個(gè)字段在全部變?yōu)榱丝罩怠?/p>

在前端沒法全量回傳所有屬性的前提下,由后端來處理這類問題。
解決方法:

1.寫一個(gè)工具方法(UpdateUtil) 用來篩選出所有的空值字段

2.更新時(shí)先通過id搜索原始對象,通過findone()等都可以

3.將前端傳來的不為空參數(shù)(也即是要修改值)copy覆蓋原始對象屬性值,通過BeanUtils.copyNullProperties(Object source, Object target)

以下是工具方法:

/**
 * 更新用工具類(忽略為null的字段)
 */
public class UpdateUtil {

  /**
   * 所有為空值的屬性都不copy
   *
   * @param source
   * @param target
   */
  public static void copyNullProperties(Object source, Object target) {
    BeanUtils.copyProperties(source, target, getNullField(source));
  }

  /**
   * 獲取屬性中為空的字段
   *
   * @param target
   * @return
   */
  private static String[] getNullField(Object target) {
    BeanWrapper beanWrapper = new BeanWrapperImpl(target);
    PropertyDescriptor[] propertyDescriptors = beanWrapper.getPropertyDescriptors();
    Set<String> notNullFieldSet = new HashSet<>();
    if (propertyDescriptors.length > 0) {
      for (PropertyDescriptor p : propertyDescriptors) {
        String name = p.getName();
        Object value = beanWrapper.getPropertyValue(name);
        if (Objects.isNull(value)) {
          notNullFieldSet.add(name);
        }
      }
    }
    String[] notNullField = new String[notNullFieldSet.size()];
    return notNullFieldSet.toArray(notNullField);
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • GC參考手冊jvm垃圾回收詳解

    GC參考手冊jvm垃圾回收詳解

    顧名思義,垃圾收集(Garbage?Collection)的意思就是?——?找到垃圾并進(jìn)行清理。但現(xiàn)有的垃圾收集實(shí)現(xiàn)卻恰恰相反:?垃圾收集器跟蹤所有正在使用的對象,并把其余部分當(dāng)做垃圾。記住這一點(diǎn)以后,?我們再深入講解內(nèi)存自動(dòng)回收的原理,探究?JVM?中垃圾收集的具體實(shí)現(xiàn)
    2022-01-01
  • SpringMVC攔截器運(yùn)行原理及配置詳解

    SpringMVC攔截器運(yùn)行原理及配置詳解

    這篇文章主要介紹了SpringMVC攔截器運(yùn)行原理及配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java實(shí)現(xiàn)計(jì)網(wǎng)循環(huán)冗余檢驗(yàn)算法的方法示例

    Java實(shí)現(xiàn)計(jì)網(wǎng)循環(huán)冗余檢驗(yàn)算法的方法示例

    這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)計(jì)網(wǎng)循環(huán)冗余檢驗(yàn)算法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • java為移動(dòng)端寫接口開發(fā)實(shí)例

    java為移動(dòng)端寫接口開發(fā)實(shí)例

    本篇文章主要介紹了java如何為移動(dòng)端寫接口,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • 基于javamelody監(jiān)控springboot項(xiàng)目過程詳解

    基于javamelody監(jiān)控springboot項(xiàng)目過程詳解

    這篇文章主要介紹了基于javamelody監(jiān)控springboot項(xiàng)目過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Mybatis入門指南之實(shí)現(xiàn)對數(shù)據(jù)庫增刪改查

    Mybatis入門指南之實(shí)現(xiàn)對數(shù)據(jù)庫增刪改查

    數(shù)據(jù)持久層主要負(fù)責(zé)數(shù)據(jù)的增、刪、改、查等功能,MyBatis 則是一款優(yōu)秀的持久層框架,下面這篇文章主要給大家介紹了關(guān)于Mybatis入門指南之實(shí)現(xiàn)對數(shù)據(jù)庫增刪改查的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 詳細(xì)介紹Java關(guān)鍵字throw?throws?Throwable的用法與區(qū)別

    詳細(xì)介紹Java關(guān)鍵字throw?throws?Throwable的用法與區(qū)別

    這篇文章主要介紹了java中throws與throw及Throwable的用法和區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Spring 依賴注入的幾種方式詳解

    Spring 依賴注入的幾種方式詳解

    本篇文章主要介紹了Spring 依賴注入的幾種方式詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java C++題解leetcode 1684統(tǒng)計(jì)一致字符串的數(shù)目示例

    Java C++題解leetcode 1684統(tǒng)計(jì)一致字符串的數(shù)目示例

    這篇文章主要為大家介紹了Java C++題解leetcode 1684統(tǒng)計(jì)一致字符串的數(shù)目示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 如何使用IDEA從SVN服務(wù)端檢出項(xiàng)目

    如何使用IDEA從SVN服務(wù)端檢出項(xiàng)目

    這篇文章主要介紹了如何使用IDEA從SVN服務(wù)端檢出項(xiàng)目問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論