【BeanUtils工具类】
javaBaen : Java和数据库所对应关系实体类
表(Utils)-->类(User)
表中的列-->类中字段(属性)
表中的行-->根据类创建的对象
javaBean包含:
1.私有的成员变量
2.公共的getter/setter方法
3.空参数构造方法
4.toSting方法
5.实现序列化接口
BeanUtils工具类的三个方法:(工具类的方法都是静态的,直接类名.方法调用)
没有返回值 setProperty(Object obj ,String name , Object value) 设置属性值
没有返回值 getProperty(Objcet obj , String name) 获取属性值
方法参数:
Objcet obj : 要赋值/获取值的javaBean对象
String name : 成员变量的名字(属性名)
Objcet value : 给成员变量赋的实际使用的值.
▲ BeanUtils 工具类可以操作的数据类型有: 基本数据类型,基本数据类型的包装类,String类型, 以上3种类型的一维数组
不管属性是什么数据类型,使用BeanUtils工具类都可以使用字符格式的数据类型来赋值(内部会把字符转换为基本类型,相当于使用
了包装类中的parsexxx() )
populated(Object bean, Map<String, String[] > properties)
将Map数据封装到指定javabean中,一般用于将表单的所有数据封装到javabean
相当于遍历Map集合,根据Map集合的key(属性名),依次使用Map集合value,给成员变量注入值
参数:
Object obj : 要复制的javabean对象
Map<String,String[]> properties : Map集合
key : String,成员变量的名字(属性名)
value : String[] , 字符串类型的数组
如果成员变量是一个数组,那么就会把value数组的所有值赋值给成员变量
如果成员变量不是一个数组,那么就会使用value数组的第一个值,赋值给成员变量
【自定义populate方法,增强方法的用处】
好处:1.让用户使用自己定义的populate方法不用处理异常
2.不用创建对象,传class文件即可!
3.参数增加泛型,传什么类型的javabean就返回什么类型的javabean
改造后的populate方法
populate(Class<E> clazz ,Map<String ,String[]> properties) 返回值: E
改在的代码具体如下
public static <E> E populate(Class<E> clazz , Map<String, String[]> properties){
try{
//2.内部通过反射创建Javabean对象
E obj = clazz.newInstance();
//3.调用BeanUtils工具类的方法populate
BeanUtils.populate(obj, properties);
//5.把对象返回给用户
retuen obj;
}catch(Exception e){
//4.对populate方法的异常进行try...catch处理
e.printStackTrace();
//把编译异常,转换为运行时异常,给成员变量注入值失败,让程序停止下来
throw new RuntimeException("注入值失败");
}
★
cn.itcast.dmeo05.domain.Student: 使用反射创建对象
cn/itcast/dmeo05/domain/Student.java: 使用IO读取/写入文件