`

BeanUtil工具包的使用

 
阅读更多

 1. 干什么?

 - 操作bean的,java web开发中,vo , entity 间不同对象,但是他们的属性几乎一样,beanUtil可以帮你把一个对象的属性copy到另一个属性中去!只是这其中有些注意点,规矩是工具包的作者制定的,我们得按照他的规矩来!

 

 

BeanUtils.setProperty(Obejct bean, String name, Object value);
// 通过这个方法 你可以给bean的字段赋值,即使name在bean中不存在他也不会报错!
// 但是如果你想通过getProperty(Obejct bean ,String name) 获得该字段的值就会
// 报NoSuchMethodException 因为它是通过反射调用getter来获得值的,而你没定义这个方法自然就会报错!

 

s.copyProperties(Object dest, Object orig);
// 他会把orig对象的字段拷贝到dest中,但是必须保证字段名称相同
// 不同的,他会忽略 不会报错!
如果存在自定义对象,比如dest中是User ,orig中是t_usr ,但是这两个类中的字段是一样的,可以copy成功吗?entity间的映射关系
貌似不可以,会报非法访问的异常!直接copy当然不可以!
可以通过定义装换器 converter!

 1. 定义转换器

public class AnimalConverter implements Converter{ // 实现这个接口
	@Override
	public <T> T convert(Class<T> type, Object value) {// 转换后的类型 以及 要转换后的对象
		T ani = null;
		try {
			ani = type.newInstance(); // 通过反射由类名获得对象
			BeanUtils.copyProperties(ani, value);// 将valu中的字段复制到转换后的对象中
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
		return ani;
	}

}

 2. 注册

 

AnimalConverter ac = new AnimalConverter();
ConvertUtils.register(ac,Animal.class);  // 第二个参数表示你要转换成类型
ConvertUtils.register(ac, Fish.class);// 如果类之间的关系是一层套一层,比如person包含
annimal , animal 中又包含fish ,就要定义多个转换器
 

  这里有一个问题,你多次注册的话,那么当进行转换时,怎么找到你要转换的类啊?这样不会重复了吗?

  不会的,看源码:

 

// 这一步是转换的过程 value 为要转换的对象 , type为要转换成的类型
protected Object convert(Object value, Class<?> type) {
// 就是这一步了,他会根据type到convertUtil里面去寻找相应的类型!所以不管你定义了多少个
// 不同类型的转换器,不会相互干扰的!
        Converter converter = getConvertUtils().lookup(type);
        if (converter != null) {
            log.trace("        USING CONVERTER " + converter);
         // 这里就会调用你实现的方法,进行转换
            return converter.convert(type, value);
        } else {
            return value;
        }
    }

 

 

 

 

分享到:
评论

相关推荐

    BeanUtil_Jar包

    这个“BeanUtil_Jar包”正是这样一个实用的工具集,它包含了丰富的功能,使得处理JavaBean的工作变得简单而高效。本文将深入探讨BeanUtil_Jar包的核心特性和使用方法,帮助开发者更好地理解和应用这个经典库。 首先...

    BeanUtil Jar包

    《BeanUtil:Apache提供的高效Java反射工具包》 在Java编程中,BeanUtil是一个非常重要的工具包,尤其在处理对象的属性操作时,它扮演着不可或缺的角色。BeanUtil源自著名的开源组织Apache,是其 Commons BeanUtils...

    BeanUtil框架完整包

    这个“BeanUtil框架完整包”包含了BeanUtil的核心组件,具体来说就是`commons-beanutils-1.8.0`这个版本的库。 Apache Commons BeanUtils是这个库的实现,它是Apache软件基金会开发的一个开源项目。`commons-...

    Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类

    本文将深入探讨BeanUtil工具类的工作原理以及如何在Servlet中使用它。 首先,让我们理解一下JavaBean的概念。JavaBean是一种遵循特定规范的Java类,主要用于封装数据。它通常具有公有构造器、公有getter和setter...

    beanutil的jar包打包

    BeanUtils是Java开发中常用的工具包,它提供了对Java Bean操作的各种便利方法,如属性的设置与获取,类型转换等。 **描述分析:** 描述中提到了三个关键组件: 1. **commons-beanutils-1.9.3**:这是Apache ...

    BeanUtil1.8 SRC 源码和 jar包

    这个jar包可以被添加到项目的类路径中,使得开发者可以在项目中直接使用BeanUtil提供的功能,如动态地获取、设置Bean的属性,以及进行Bean之间的复制等。在实际开发中,我们可以利用这些功能,大大减少代码量,提高...

    基于java的常用工具包 Jodd.zip

    Jodd工具包的亮点之一是其强大的对象拷贝功能,通过`BeanUtil`类,可以方便地实现对象之间的属性复制,这对于数据转换和模型绑定非常有用。此外,它的`LagartoHTMLParser`提供了一个高效的HTML解析器,可以帮助...

    Java常用工具包 Jodd

    Java常用工具包Jodd是一个强大的开源库,专为Java开发者设计,提供了许多实用的功能和类,以简化开发过程。这个工具包涵盖了多个领域,包括HTTP客户端、数据转换、日期时间处理、字符串操作、I/O流、线程管理、对象...

    BeanUtil_MYSQL_mybaatis_

    在给定的标题"BeanUtil_MYSQL_mybaatis_"中,我们可以推断这是一个关于MyBatis和MySQL结合使用的工具类,可能用于自动根据实体Bean生成SQL语句。描述进一步明确了这个工具的功能,包括自动生成创建表的DDL(Data ...

    BeanUtil与Logging

    首先,BeanUtil通常指的是Apache Commons BeanUtils库,这是一个Java工具包,提供了一系列方便的类来处理JavaBeans。这些类帮助开发者简化了对象属性的设置、获取以及复制等工作,极大地提高了代码的可读性和可维护...

    dom4j jstl beanUtil log4j等jar包

    【标题】中的"dom4j jstl beanUtil log4j等jar包"涉及了四个重要的Java库,它们在开发Java应用程序,特别是Web应用时非常常见。下面将逐一详细介绍这些库的功能、用途以及如何在项目中使用它们。 1. **DOM4J**:这...

    BeanUtilities工具类使用jar包

    使用`BeanUtilities`工具类的一般步骤如下: 1. 引入相关的库文件:在Java项目中,将这三个jar包添加到项目的类路径中,确保编译和运行时能够找到对应的类和方法。 2. 创建Java Bean对象:首先,你需要定义一个...

    beanutil源代码

    "beanutil源代码"指的是这个库的源代码,它提供了一系列的工具方法,使得开发者能够方便地对JavaBean属性进行设置、获取以及转换。在本案例中,"commons-beanutils-1.8.0-src"是包含BeanUtils库1.8.0版本的源代码...

    简单的jsp项目需要的jar包,包括MySQL,JDBCTemplte,jQuery,JSTL,c3p0,druid,BeanUtil

    BeanUtil通常指的是Apache Commons BeanUtils库,这是一个实用工具类库,提供了各种方法来操作Java Bean,如属性的复制、类型转换等。在JSP项目中,BeanUtil可以帮助我们方便地处理对象之间的属性赋值,简化对象间的...

    commons-beanutil-1.7.0-src

    开发者可以通过解压"commons-beanutils-1.7.0-src",阅读源代码来深入了解其内部实现,学习如何使用反射、泛型和异常处理等Java技术,以及如何构建类似的实用工具库。此外,源代码还提供了丰富的注释和示例,有助于...

    Java常用工具包Jodd.zip

    按需选择,其中工具类模块有:jodd-core 一些工具类,包括Printf、JDateTime、StringUtil、Fast buffers等等jodd-bean BeanUtil以及类型检查转换工具jodd-props 更强大的Java Properties替代jodd-email 更简单...

    BeanUtil.java

    资源内容:工欲善其事必先利其器,本资源内容为Java开发常用工具类打包,如BeanUtil,ArrayUtil,HtmlUtil,ClassUtil,DateUtil,FileUtil,FontUtil,ImageUtil,IOUtil, IPUtil, MapUtil,MailUtil, NumberUtil,...

    beanutil资料

    Apache BeanUtils是...总之,Apache BeanUtils是Java开发中的一个重要工具,它简化了Bean对象的操作,提升了开发效率。通过阅读API文档和实践使用,开发者可以更好地掌握这一强大的库,并将其应用到自己的项目中。

    jar包itcast-tools-1.4.2.jar

    在JavaWeb开发中,各种工具包的使用极大地提升了开发效率和代码质量。其中,"itcast-tools-1.4.2.jar"是传智博客单独为JavaWeb开发者设计的一个实用工具包,其主要功能包括对UUID的处理和对象转换,帮助开发者更方便...

    Hutool 参考文档.pdf

    集合类概述、Bean工具(BeanUtil)和DynaBean为Java集合框架和JavaBean操作提供了便利。表达式解析(BeanPath)、集合工具(CollUtil)、Iterator工具(IterUtil)和有界优先队列(BoundedPriorityQueue)则为集合...

Global site tag (gtag.js) - Google Analytics