常用的方法有:
setProperty(); getProperty(); populate(); copyProperties();
org.apache.commons.beanutils.BeanUtils的maven坐标
<!--beanUtils的工具包-->
<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
下面一一示例
setProperty(); getProperty();方法使用
//根据字段设置值setter,getter方法
private static void setUser() throws Exception {
TestUser user=new TestUser();
//根据字段名称赋值
BeanUtils.setProperty(user,"name","xiaohei");
//根据字段名称取值
String name = BeanUtils.getProperty(user, "name");
System.out.println(name); //xiaohei
System.out.println(user.toString());//TestUser{name='xiaohei', password='null', age=0}
}
setProperty(); getProperty();方法只可以赋值对象中有的字段没有赋值不上,取值一样
populate(); 方法使用
//将map转化成对象
private static void setUserToMap() throws Exception {
TestUser user=new TestUser();
Map<String,String> map= new HashMap<>();
map.put("name","xiaohua");
map.put("password","123445");
map.put("age","10");
map.put("haha","haha");
//将map key值与对象字段相对应的赋值,
BeanUtils.populate(user,map);
//只赋值name,password,age, haha自动抛弃
System.out.println(user.toString()); //TestUser{name='xiaohua', password='123445', age=10}
}
populate() 也是只赋值对象中有的字段
copyProperties()方法的使用
//赋值对象
private static void copy()throws Exception{
TestUser user=new TestUser();
TestUser user1=new TestUser();
user.setName("小黑");
user.setPassword("123456");
user.setAge(30);
//copyProperties 第一个对象是要复制得到的对象,第二个是目标对象
BeanUtils.copyProperties(user1,user);
System.out.println(user1.toString());//TestUser{name='小黑', password='123456', age=30}
}
copyProperties()这个方法是全部赋值,比如user1之前有值,使用此方法之前的值会被user的值覆盖,全部赋值,也是copy相同字段的值;