比較2つのクラスが同じエンティティutilsのです

比較2つのエンティティクラスが一貫utilsのとおりです。

インポートあるjava.beans.Introspector;
 インポートjava.beans.PropertyDescriptor;
 インポートjava.lang.reflect.Methodオブジェクト、
 インポートたjava.sql.Timestamp;
 インポートjava.util.Date;
 輸入java.util.HashMapを、
 インポートjava.util.Listに;
 インポートjava.util.Mapは、

パブリック クラスはClassCompareUtil { 

    
    / ** 
     *二つのオブジェクトテーブル内のプロパティ値には差がなく、真のブール値を返し、2つのエンティティの属性値を比較
     * @paramのオブジェクト属性の比較は、1 oldObject 
     * @param でnewObject属性比較対象2 
     * @return ブールの結果との間に財産の比較
      * / 
    パブリック 静的 ブールcompareObject(オブジェクト内OLDobject、でnewObjectオブジェクト){ 
        地図 <文字列、マップの<string、オブジェクト>>このresultMap = compareFields(中OLDobject、でnewObject); 
        
        IF(resultMap.size()> 0 ){
             リターン trueに; 
        } そう{
             リターン はfalse 
        } 
    } 
    
    / ** 
     * 2つのエンティティの属性値がこの属性名の地図oldObject、でnewObject値として保存された差分キーと呼ばれるプロパティ、値を返すためにマップの比較
     * @param オブジェクト属性比較1でOLDobject 
     * @param オブジェクトの属性比較でnewObject 2 
     * @returnの結果との間に財産の比較地図
      * /
    @SuppressWarnings( "rawtypes" のパブリック 静的地図<文字列、地図<文字列、オブジェクト>> compareFields(Object内のOLDobject、でnewObjectオブジェクト){ 
        地図 <文字列、地図<文字列、オブジェクトマップ>> = ヌル; 
        
        試み{    
             / ** 
             *唯一の2つのオブジェクトが同じタイプのものと同等である。
             * / 
            IF(oldObject.getClass()== newObject.getClass()){ 
                地図 = 新しい新規のHashMap <文字列、マップの<string、オブジェクト>> (); 
                
                クラスclazz = oldObject.getClass();
                 // オブジェクトのすべての属性を取得
                PropertyDescriptor [] = PDS Introspector.getBeanInfo(clazz、オブジェクト。クラス).getPropertyDescriptors(); 
                
                のため(のPropertyDescriptor PD:PDS){
                     // 取得した属性名の反復 
                    文字列名= pd.getNameを(); 
                    
                    // 取得プロパティGETメソッド 
                    = readMethod方法、pd.getReadMethodは(); 
                    
                    // でoLDobjectを得た等価物性値のgetメソッドoLDobject呼び出す 
                    オブジェクトOLDVALUE = (中oLDobject)readMethod.invokeを;
                     //はでnewObject等価物性値にgetメソッドを呼び出し得られるでnewObjectの 
                    オブジェクト= newValueにreadMethod.invoke(でnewObject); 
                    
                    IF(OLDVALUEinstanceofの一覧){
                         続けます
                    } 
                    
                    場合(newValueにinstanceofのリスト){
                         続けます
                    } 
                    
                    であれば(OLDVALUE instanceofのタイムスタンプ){ 
                        OLDVALUE = 新しい日付(((タイムスタンプ)OLDVALUE).getTime())。
                    } 
                    
                    であれば(newValueにinstanceofのタイムスタンプ){ 
                        newValueに = 新しい日付(((タイムスタンプ)newValueに).getTime())。
                    } 
                    
                    であれば(OLDVALUE ==ヌル && newValueに== NULL ){
                         続けます
                    } それ以外の 場合(OLDVALUE == nullの && newValueに=!ヌル){ 
                        地図 <文字列、オブジェクト>のValueMap = 新しい HashMapの<文字列、オブジェクト> (); 
                            valueMap.put( "OldValueプロパティ" 、OLDVALUE)。
                            valueMap.put( "newValueに" 、newValueに); 
                        
                        map.put(名前、ValueMapの); 
                        
                        続け; 
                    } 
                    // 比较这两个值是否相等、
                    (!oldValue.equals(newValueに)){ 
                        地図 <文字列、オブジェクト>のValueMap = 新しい HashMapの<文字列、オブジェクト> (); 
                            valueMap.put( "OldValueプロパティ" 、OLDVALUE)。
                            valueMap.put( "newValueに" 、newValueに); 
                        
                        map.put(名前、ValueMapの); 
                    } 
                } 
            } 
        } キャッチ(例外e){ 
            e.printStackTrace(); 
        } 
        
        リターンマップ。
    } 
}

おすすめ

転載: www.cnblogs.com/wangquanyi/p/12106514.html