我的学习之路_第十七章_JavaUtils

【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读取/写入文件

时间: 2024-11-04 03:50:11

我的学习之路_第十七章_JavaUtils的相关文章

我的学习之路_第二十七章_jQuery

jQueryjs类库 把常用对象或者方法封装起来,让我们写代码效率更高 1.jQuery 2.extjs [jQuery入门] jQuery的引入: 通过script标签的src属性引入 入门: 获取jQuery对象 $(选择器) == jQuery(选择器) 获取值 jQuery.val(); jQuery对象和Dom对象的转换 Dom对象转jQuery对象 : var jQuery对象 = $(dom对象); jQuery对象换Dom对象 : 方式一: var Dom = jQuery对象[

我的学习之路_第七章_list集合,set集合

[List集合] List集合存储数据的结构 堆栈:先进后出(先存进来的元素,最后取出) 例如:子弹压进弹夹 队列:先进先出(先存进来的元素,先取出来) 例如:排队 『ArrayList』 数组:查找元素快,增删元素慢 有索引 『LinkedList』 链表:查找元素慢,增删元素快 没有索引,连接的是节点 例如:手拉手 List接口方法_带索引的 add(int index ,E e) 在指定的索引上添加元素 remover(int index) 移除并返回指定索引上的元素 set(int in

我的学习之路_第二十三章_HTML

Html : 超级文本语言 ( Hyper text Markup Language ) HTML 文件扩展名是 * .html HTML 结构都是有标签组成 通常情况下标签有开始标签和结束标签组成 例如 : <a> </a> 围堵标记 如果没有结束标签,不能写文本 例如<img/> 空标记 标签中可以有属性 属性的书写格式: 属性名= "属性值"; 文字类标签: <hn> </hn> n是一个可变参数 n的取值范围1-6 ,

我的学习之路_第六章_迭代器,泛型

[Collection] 类 接口类 所属包:java.util.Collection Collection类是集合的最顶层的接口,定义了集合共性的方法. 接口无法创建对象,使用多态的方式创建对象 Collection<集合中的数据类型(泛型)> 变量名 = new ArrayList<集合中的数据类型(泛型)>(); Collection接口常用子类接口有: List接口 set接口 List接口常用子类有: ArrayList类 LinkedList类 set接口常用的子类有:

我的学习之路_第五章_Data,正则

Date 类 (时间类) 所属包:java.util.Date 构造方法: public Date() 返回的是当前时间 也就是1970-1-1到电脑目前的时间值,用毫秒来表示 public Date(long 毫秒值) 返回指定毫秒值的时间 方法: 返回值 long getTime() 返回当前时间的毫秒值 没有返回值 setTime(long 毫秒值) 设置当前时间的毫秒值 java中的时间原点为:1970-1-1 00:00:00毫秒值的换算: 1秒=1000毫秒 DateFormat (

我的学习之路_第三章_匿名内部类

final: final是最终修饰符,可以修饰类.成员方法.变量. final修饰的类无法被继承. final修饰的方法无法被重写. final修饰的变量无法被再次赋值,变为了常量. final修饰的引用数据类型变量,可以修改对象里面的属性内容,不可改变地址值 final修饰的成员变量,不能使用默认值,没有意义,必须在创建对象之前完成赋值. static: 静态修饰符,被static修饰的内容属于类不专属于某个对象,多个对象共享使用这一个成员 使用static修饰的成员可以用类名直接访问,建议这

我的学习之路_第三一章_servletContext

servletContext ServletContext代表的是整个项目 [域对象] 就是一个Map<String,Object>,ServletContext代表的是整个项目,所以sercletContext域是可以被所有用于,所有页面,在任何时候都能访问到的一个公共空间. ServletContext域的使用: 返回值 : void setAttribute(String key,Object value) 返回值 : Object getAttribute(String key) 返回

我的学习之路_第十一章_字符流

[字符流] IO流的分类 ★字节流 操作的文件不是文本文件 字节输入流: InputStream 抽象类 FileInputStream操作文件的字节输入流 字节输出流: OutputStream 抽象类 FileOutputStream操作文件的字节输出流 ★字符流 操作的文件是文本文件 字符输入流: Reader 抽象类 FileReader 用来操作文件的字符输入流 字符数出流: Writer 抽象类 FileWriter 用来操作文件的字符输出流 [转换流] ▲OutputStreamW

我的学习之路_第四章_异常

一 Object 类 equals方法: 四则运算是不能操作引用类型的 ,而 == 可以操作引用类型,但是在任何时刻只要是用 == 比较引用类型,比较的永远都是地址值. 返回类型 Boolean 比较两个对象是否相等,比较的是地址值 Object 的equals方法比较的是地址值,子类可以重写此方法,比较两个对象的属性值 toString方法: 返回类型String toString()返回对象的字符串表现形式 类型[email protected]+哈希值(地址值) 看一对象的地址值,只能区分