1、前言
初学java时,使用过beanUtils封装javaben参数,使用框架之后,由框架自动封装。慢慢淡忘了这个工具类,今天来学习学习!
2、导入依赖
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
该依赖包含了:
3、小试牛刀
@Test
public void test01() throws Exception {
Student stu1 = new Student();
Student stu2 = new Student();
stu2.setNo("TEST001");
stu2.setName("Jack Chen");
//复制属性
System.out.println(stu1);
System.out.println("------------------------");
BeanUtils.copyProperties(stu1, stu2);
System.out.println(stu1);
//设置属性的值
BeanUtils.copyProperty(stu1, "major", "机械设计");
System.out.println("------------------------");
System.out.println(stu1);
//将javaBean转化成Map
Map<String, String> describe = BeanUtils.describe(stu1);
System.out.println("------------------------");
for (Map.Entry<String, String> entry : describe.entrySet()) {
System.out.println("K:"+entry.getKey()+"--V:"+entry.getValue());
}
//将Map转化成javaBean
Map<String , String> map = new HashMap<>();
map.put("no", "TEST002");
map.put("name", "Blueth Li");
map.put("major", "Kong Fu");
Student stu3 = new Student();
BeanUtils.populate(stu3, map);
System.out.println("------------------------");
System.out.println(stu3);
}
4、结果
5、后记
该工具类中除了BeanUtis方法之外,还有PropertiesUtils、ConvertUtis等。我比较关心BeanUtils这个方法,。
spring框架中也有自带的BeanUtils,使用方法和改工具类类型,注意参数的顺序。
扫描二维码关注公众号,回复:
4872849 查看本文章
6、注意事项
使用beanUtils复制对象的时候,需要注意的是:该工具类复制的时候,如果值为null,那么复制到目标对象中只会被初始化。
Integer、BigDecimal会被处理成0,Date会报错,Boolean出处理成false等。不过,该工具类也提供了相应的处理办法:
ConvertUtils.register(new DateConverter(null), java.util.Date.class);
ConvertUtils.register(new BigDecimalConverter(null), java.math.BigDecimal.class);
ConvertUtils.register(new IntegerConverter(null), java.lang.Integer.class);
ConvertUtils.register(new BooleanConverter(null), java.lang.Boolean.class);
注意处理数据就不会被初始化了。具体可以看源码的converters包