如果你有倆個具有很多相同屬性的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)