天天看點

BeanUtils.copyProperties小結一下

如果你有倆個具有很多相同屬性的JavaBean,而你又不想手動的用get()set()方法來COPY。這時候copyProperties()方法的作用就展現出來了。例如經常用到的和hibernate綁定的實體,和另一個實體屬性值的copy

public class APDto {
	
	
        private String ssid;
	private String deviceMac;
	private String bssid;
	private String deviceNo;
	private String deviceModel;
	private String bandWidth;
	private String bandOpr;
	private String  storeId;
	private String storeName;
	private String brandName;
	private String storeProvince;
	private String storeCity;
	private String storeAddress;
	private String storeField;
	private String storeMail;
	private String storePhone;
	private String storeContact;
	private String storeLongitude;
	private String storeLatitude;
       //get,set方法省略
}
           
@Entity
@Table(name = "wx_ap", catalog = "db_freeradius")
public class WeiXinAP extends BaseEntity implements java.io.Serializable {
	
	/**
	 * 
	 */
	private static final long serialVer         sionUID = -227365820215202729L;
	private Long id;
	private Long hid;
	private String ssid;
	private String deviceMac;
	private String bssid;
	private Long deviceNo;
	private String deviceModel;
	private String bandWidth;
	private String bandOpr;
	private Integer  storeId;
	private String storeName;
	private String brandName;
	private String storeProvince;
	private String storeCity;
	private String storeAddress;
	private String storeField;
	private String storeMail;
	private String storePhone;
	private String storeContact;
	private double storeLongitude;
	private double storeLatitude;
	private int status;
	
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true)
      //省略get,set方法
}
           

使用BeanUtils.copyProperties(apDto,weiXinAP);方法就能把weixinAP對應的屬性值賦給apDto,而weixinAP多餘的字段不會對它作任何處理。

(PS當有的字段為null屬性時,使用此方法會出現問題。例如int型的null使用此方法後對應的字段會變為0,如果你之後的業務邏輯有用null判斷的情況,就會出現問題,這時候需要你去重寫他的方法對為null的情況進行修改,建議使用spring中的BeanUtils)