1、commons-beanutils的使用
commons-beanutils-1.9.3.jar 依赖 commons-logging-1.2.jar
代码1:
String className = "cn.itcast.domain.Person";
Class clazz= Class.forName(className);
Object bean= clazz.newInstance();
BeanUtils.setProperty(bean,"name", "张三");
BeanUtils.setProperty(bean,"age", "20"); //age是int类型,会自动转换
BeanUtils.setProperty(bean, "xxx", "XXX"); //没有xxx属性,也不会抛异常
String age= BeanUtils.getProperty(bean, "age");
代码2:
需求:把map中的属性直接封装到一个bean类中。map:{"username:zhangsan","password:123"}。 我们要把map的数据封装到一个javaBean中!要求map的key值于bean的属性名相同。
首先,新建一个javabean,User.java 有两个属性username,password。
public void fun1() throwsException {
Map map = new HashMap();
map.put("username", "zhangsan");
map.put("password", "123");
User user= newUser();
BeanUtils.populate(user, map);
System.out.println(user);//User [username=zhangsan, password=123]
}
代码3:封装工具类(用到泛型)
public classCommonUtils {//把一个Map转换成指定类型的javabean对象
public static T tobean(Map map, Classclazz) {try{
T bean=clazz.newInstance();
BeanUtils.populate(bean, map);returnbean;
}catch(Exception e) {throw newRuntimeException(e);
}
}
}
2、测试封装的工具类
packagecom.oy;importjava.math.BigDecimal;importjava.util.HashMap;importjava.util.Map;/***@authoroy
*@version1.0
* @date 2019年5月7日
* @time 下午10:10:35*/
public classUser {privateInteger id;privateString name;privateBoolean status;privateBigDecimal balance;privateDouble salary;public static voidmain(String[] args) {
Map map = new HashMap<>();
map.put("id", 1);
map.put("name", "张三");
map.put("status", true);
map.put("balance", 1000.123456789);
map.put("salary", 1000.123456789);
System.out.println(CommonUtils.tobean(map, User.class));
}//getter、setter和toString方法省略}
map的key对应的值全部写成字符串格式也是可以的:
Map map = new HashMap<>();
map.put("id", "1");
map.put("name", "张三");
map.put("status", "true");
map.put("balance", "1000.123456789");
map.put("salary", "1000.123456789");//User [id=1, name=张三, status=true, balance=1000.123456789, salary=1000.123456789]
System.out.println(CommonUtils.tobean(map, User.class));