クラスのコピー

データ更新を行う場合、ビジネス上で、それらの間のモデルとエンティティの点が、メンバー変数名がほとんど同じなので、1 GSは難しいだろうが、幸い春BeanUtilパッケージと呼ばれるツールがある場合は可能です、それは置換値で同じ名前である限り、コピーされたが、時々私はちょうどそれがパロディので、NULL値が動作していない元の値に新しい値をカバーする必要があります。

パブリック クラスは々 BeanUtils 拡張org.springframework.beans.BeanUtils { 

    プライベート々 BeanUtils(){ 
    } 

    / ** 
     唯一の非空のフィールドをコピー*エンティティクラスのコピーを、
     * 
     * @paramのソース・ソース・クラス
     * @paramの対象オブジェクトクラス
      * / 
    パブリック 静的な 無効copyNullProperties (ソースオブジェクト、オブジェクトのターゲット){ 
        Assert.notNull(出典は、 "未送信元はNULLでなければなりません" ); 
        Assert.notNull(ターゲットは、 "ターゲットはNULLでなければなりませんしない" ); 
        クラス <?> actualEditable = target.getClass();
        PropertyDescriptor [] targetPdsの =getPropertyDescriptorsが(actualEditable)。
        (のPropertyDescriptor targetPd:targetPds){ 
            方法writeMethod = targetPd.getWriteMethod()。
            してみてください{
                 場合(!writeMethod = ヌル){ 
                    のPropertyDescriptor sourcePd = getPropertyDescriptor(source.getClass()、targetPd.getName());
                    もし(!sourcePd = NULL ){ 
                        方法readMethod = sourcePd.getReadMethod()。
                        もし readMethod(!= nullを && ClassUtils.isAssignable(writeMethod.getParameterTypes()[0 ]、readMethod.getReturnType())){
                             場合(!){Modifier.isPublic(readMethod.getDeclaringClass()getModifiers()。)
                                readMethod.setAccessible()。
                            } 
                            オブジェクト値 = readMethod.invoke(ソース)。
                            もしヌル ==値)続けますもし(!Modifier.isPublic(writeMethod.getDeclaringClass()。getModifiers())){ 
                                (writeMethod.setAccessible ); 
                            }
                            writeMethod.invoke(目標値)。
                        } 
                    } 
                } 
            } キャッチ(ThrowableのEX){
                 スロー 新しい( ' "ソースからターゲットに、" "プロパティをコピーできませんでした" + targetPd.getName()+' FatalBeanExceptionを、元の); 
            } 
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/SummerinShire/p/11104148.html