`

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包

    提供了对javabean进行操作的工具类 用了很多年了 很全很经典的BeanUtil_jar包

    BeanUtilities工具类使用jar包

    要使用根据请求自动填充Java对象,表单bean 使用的jar包,BeanUtilities工具类使用jar包

    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,...

    java-utils常用工具类打包.zip

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

    beanutils中文API.doc

    Commons-beanutil中包含大量和JavaBean操作有关的工具方法,使用beanutils可轻松利用Java反射机制来完成所需功能,而不需要详细研究反射的原理和使用,同时beanutils类库中提出了动态Bean的概念,可在运行时动态对...

    common-fileupload.jar

    包括commons所有的18个工具包: validator、pool、beanutil、logging、dbcp、collections、codec、digester、discover、email、fileupload、httpclient、jelly、jxpath、lang、modeler、net

    使用XLSTransformer生成报表

    使用XLSTransformer生成XLS报表的jar包: jxls-core-0.9.7.jar jxls-reader-0.9.7.jar poi-3.6.jar commons-jexl-1.1.jar commons-digester-2.0.jar commons-beanutil-core-1.8.3.jar commons-collection.jar

    json.常用工具

    json开发工具jar包必备commons-colloections-3.2.1.jar commons-logging-1.1.1.jar commons-beanutil.jar commons-httpclient.jar commons-lang.jar ezmorph-1.0.6.jar json-lib-2.4-jdk15.jar morph-1.1.1.jar

    commons-logging-1.1.1.jar_jb51.rar

    commons-beanutils.jar 免费下载 commons-beanutils 是 Apache 开源组织提供的用于操作 JAVA BEAN 的工具包。 使用 commons-beanutils,我们可以很方便的对 bean 对象的属性进行操作。

    commons-beanutils-1.9.4-src.tar.gz

    commons-beanutils.jar 免费下载 commons-beanutils 是 Apache 开源组织提供的用于操作 JAVA BEAN 的工具包。 使用 commons-beanutils,我们可以很方便的对 bean 对象的属性进行操作。

    commons-beanutils-1.9.0-src.zip

    commons-beanutils是Apache开源组织提供的用于操作JAVA BEAN的工具包。使用commons-beanutils,我们可以很方便的对bean对象的属性进行操作。

    commons-beanutils-1.8.3.zip

    commons-beanutils-1.8.3。commons-beanutils是Apache开源组织提供的用于操作JAVA BEAN的工具包。使用commons-beanutils,我们可以很方便的对bean对象的属性进行操作。

    Jodd工具集-其他

    jodd-bean BeanUtil以及类型检查转换工具 jodd-props 更强大的Java Properties替代 jodd-email 更简单易用的e-mail收发 jodd-upload 处理HTTP上传 jodd-servlets 一些Servlet相关的工具类, 附带一套漂亮的JSP标签库 ...

    commons-beanutils-1.8.0.zip

    commons-beanutils是Apache提供的一个用于操作JAVA bean的工具包。里面提供了各种各样的工具类,让我们可以很方便的对bean对象的属性进行各种操作。

    FontUtil.java

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

    IpUtil.java

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

    CharacterUtil.java

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

    ListUtil.java

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

    MailUtil.java

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

Global site tag (gtag.js) - Google Analytics