- 浏览: 481344 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
学渣村的好村长:
很
java 列表转树形 -
wawj0819:
...
java 列表转树形 -
fireinjava:
LyAn_爱踢爱死 写道我有疑问,关于数组时你说collect ...
mybatis sql in 查询 -
LyAn_爱踢爱死:
我有疑问,关于数组时你说collection="ar ...
mybatis sql in 查询 -
yrsheng:
不行!楼主你真的试过吗?
Spring mvc 传递数组
自己写了个copyProperties方法,虽没apache与spring的强大,但功能自己够用就好,而且不用引入第三方库。
package bean; import java.lang.reflect.Method; /** * @version 1.0 * @author fireinjava * @data Dec 11, 2009 * @描述: 存放字段及其要用到的对应get(来自sourceBean)与set(来自targetBean)方法 */ public class PropertyMethod { private String propertyName; private Method methodRead; private Method methodWrite; public String getPropertyName() { return propertyName; } public void setPropertyName(String propertyName) { this.propertyName = propertyName; } public Method getMethodRead() { return methodRead; } public void setMethodRead(Method methodRead) { this.methodRead = methodRead; } public Method getMethodWrite() { return methodWrite; } public void setMethodWrite(Method methodWrite) { this.methodWrite = methodWrite; } }
package bean; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; /** * @version 1.0 * @author fireinjava * @data Dec 11, 2009 * @描述:拷贝Bean(适用于标准JavaBean,且拷贝的属性类型必须一致) */ public class BeanUtils { public static void copyProperties(Object source, Object target) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { copyProperties(source, target, null); } /** * 当某个属性不必复制或两个Bean属性名称一样且类型不一样时用(得另外设值) */ public static void copyProperties(Object source, Object target, String[] ignoreProperties) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { if (source == null) throw new IllegalArgumentException("Source must not be null"); else if (target == null) throw new IllegalArgumentException("Target must not be null"); List<String> ignoreList = null; if (ignoreProperties != null) ignoreList = Arrays.asList(ignoreProperties); List<PropertyMethod> listPm = new ArrayList<PropertyMethod>(); Map<String, Method> mapMethodWrite = new HashMap<String, Method>(); Map<String, Method> mapMethodRead = new HashMap<String, Method>(); Method[] methodTarget = target.getClass().getMethods(); for (Method mt : methodTarget) if (mt.getName().startsWith("set")) { String propertyName = mt.getName().substring(3, 4).toLowerCase() + mt.getName().substring(4); if (ignoreList == null || !ignoreList.contains(propertyName)) mapMethodWrite.put(propertyName, mt); } Method[] methodSource = source.getClass().getMethods(); for (Method ms : methodSource) if (ms.getName().startsWith("get")) mapMethodRead.put(ms.getName().substring(3, 4).toLowerCase() + ms.getName().substring(4), ms); else if (ms.getName().startsWith("is")) mapMethodRead.put(ms.getName().substring(2, 3).toLowerCase() + ms.getName().substring(3), ms); Iterator<String> iter = mapMethodWrite.keySet().iterator(); while (iter.hasNext()) { String propertyName = iter.next(); if (mapMethodRead.get(propertyName) != null) { PropertyMethod pm = new PropertyMethod(); pm.setPropertyName(propertyName); pm.setMethodRead(mapMethodRead.get(propertyName)); pm.setMethodWrite(mapMethodWrite.get(propertyName)); listPm.add(pm); } } for (PropertyMethod pm : listPm) { Object[] obj = new Object[1]; obj[0] = pm.getMethodRead().invoke(source, new Object[0]); pm.getMethodWrite().invoke(target, obj); } } }
其中List<PropertyMethod> listPm = new ArrayList<PropertyMethod>();用来存放完整的属性及属性Get/set方法,不借助 PropertyMethod而直接用两个Map也可。
另外两种copyProperties:
org.apache.commons.beanutils.BeanUtils.copyProperties(target, source);
//source中的Timestamp类型属性值不可为null 否则会报错
org.springframework.beans.BeanUtils.copyProperties(source, target);
发表评论
-
将编码为GBK的Java源文件批量转为UTF-8
2016-09-10 11:41 1602转自 http://my.oschina.net/binny ... -
判断上传的文件是否图片格式
2015-08-16 01:49 4634转自 http://stackoverflow.co ... -
StreamCorruptedException invalid type code 34
2014-12-15 22:47 1205反序列的时候抛错: java.io.StreamCor ... -
ant property 修改
2013-12-17 16:57 3020ant借助antcrontrib.jar修改propert ... -
websphere liberty 安装 部署
2013-08-21 00:24 5902websphere application server l ... -
java 列表转树形
2013-02-01 10:31 28081往往要将数据库中的菜单配置转成树形结构展示到前台,这边提供 ... -
判断文件是否UTF-8编码
2012-12-04 08:50 3897判断文件是否UTF-8编码: 对于UTF-8编码 ... -
java replaceAll 的类似group用法
2012-08-30 23:25 2341replaceAll比较特殊的用法介绍一个: eg:把中括号 ... -
java.lang.UnsupportedClassVersionError: Bad version number in .class file
2012-05-25 10:42 1317项目在Tomcat跑的时候报Bad version numbe ... -
weblogic出现response already committed
2011-11-30 15:06 5800jsp页面导出时在weblogic下会出现response a ... -
XML解析 Invalid byte 2 of 2-byte UTF-8 sequence
2011-10-10 00:32 1821String xmlStr = "<?xml ... -
VBS脚本设置Java环境变量
2011-07-26 16:09 2196转自 http://blog.csdn.net/sunyuji ... -
jsp获取网站域名 域名解析
2011-07-22 17:23 14095部署主机如果有弄域名解析的话访问http://www.doma ... -
在顶层iframe页面添加图片div
2011-06-27 11:59 2864又解决了一个问题...之前想太复杂了... 父页面ht ... -
apache转发 js 跨域
2011-01-24 10:20 5159安装Apache HTTP Server 打开apache安 ... -
MyEclipse 启动tomcat的时候报cannot connect to vm
2010-12-22 00:58 3181MyEclipse 启动tomcat的时候突然报cannot ... -
Eclipse常用快捷键
2010-09-20 10:23 1391http://www.eclipse.org/downlo ... -
table导出为Excel jxl
2010-09-02 16:59 3461平时用js导出table有些不足,导出的Excel内容也不够好 ... -
Java打Tag CvsClient
2010-08-26 21:16 2414增量编译的时候需要一个一个文件打Tag,不方便,网上也没发现现 ... -
Tomcat布署
2010-08-16 19:25 11921.项目布署 tomcat安装目录下加个配置文件即可 ...
相关推荐
一个BeanUtils.copyProperties的小型快速替代。 起因 由于BeanUtils(Spring或Apache Commons)的copyProperties实现是利用反射实现的,它在大量调用时具有比较严重的性能问题。 BeanMapper通过javassist类库实现在...
Java Beanutils.copyProperties() 用法详解 Java Beanutils.copyProperties() 方法是 Java 中一个非常有用的工具,主要用于将一个 JavaBean 的属性复制到另一个 JavaBean 中。今天,我们将详细介绍 Java Beanutils....
在Java编程中,数据结构是程序设计的基础,而List接口作为集合框架的重要组成部分,常常用于存储有序的元素序列。当我们需要复制一个List时,可能会遇到浅复制和深复制的概念。浅复制只复制对象本身,而不复制它引用...
此外,Java标准库中提供了`org.springframework.beans.BeanUtils`或者Apache Commons Lang的`BeanUtils.copyProperties()`方法,它们提供了更完善的转换功能,包括处理嵌套属性、类型转换等。这些工具类的使用可以...
如`copyProperties(Object source, Object target)`可以将源对象的属性复制到目标对象。 9. **FileUtil.java**:文件操作工具类,提供读写文件、创建目录、删除文件等方法。例如,`readFileToString(File file, ...
PropertyUtils.copyProperties(dest, orig); ``` `PropertyUtils`是Apache Commons BeanUtils中的工具类,用于复制对象属性。 #### 4.2 字段比较 ```java EqualsBuilder.reflectionEquals(lhs, rhs, excludeFields)...
#### 二、Java实现超额发票单据拆分的技术要点 1. **参数定义与初始化**:首先明确拆分方法所需参数,并对其进行初始化。 - `Map, Object> params`:用于传递拆分所需的各类参数,如发票单据对象、明细项列表等。 ...
1. **属性拷贝**:`BeanUtils.copyProperties()`方法可以方便地将一个对象的属性值复制到另一个对象,大大简化了对象间的属性映射。 2. **属性访问**:`PropertyUtils`类提供了对Java对象属性的无反射访问,可以...
- Apache Commons BeanUtils库也提供了丰富的Bean操作,如`copyProperties()`方法可以方便地复制一个Bean的属性到另一个Bean。 5. **其他工具类**: - `java.util.Arrays`提供了对数组的各种操作,如排序、查找、...
- **Apache Commons BeanUtils库**:提供了`BeanUtils.copyProperties()`方法,可以快速实现对象间的属性复制,但不支持自定义复制规则。 - **Dozer库**:允许使用注解来定义复制规则,支持深度复制和类型转换,...
总的来说,`BeanUtils.copyProperties`是Java开发中一个非常实用的工具,它简化了对象间属性赋值的过程,提高了代码的简洁性和可维护性。在实际应用中,开发者应根据具体需求选择合适的使用方式,并注意处理可能出现...
这通常需要手动实现或使用工具类如`Apache Commons Lang`的`BeanUtils.copyProperties()`方法来实现。 #### 五、结论 Java虽然没有传统的指针概念,但它通过引用机制实现了类似的功能。了解Java中对象的传递方式和...
- 使用Spring Framework中的`BeanUtils.copyProperties()`方法,它不仅支持多种类型转换,而且在性能方面也优于Apache Beanutils。 - 考虑使用Cglib提供的`BeanCopier`工具,该工具通过生成特定的类来实现快速属性...
### Java知识点总结 #### 1. 查询数据返回值为空及解决方法 在使用Java进行数据库操作时,可能会遇到查询结果为空的情况。这可能是由于查询条件不符合任何记录导致的。为了解决这一问题,通常需要检查SQL语句是否...
在Java编程中,值拷贝(Value Copy)是一种常见的数据操作,主要用于对象之间的属性值复制。这个主题涉及到Java中的浅拷贝和深拷贝概念,以及如何利用工具库如Apache Commons BeanUtils进行对象属性的便捷复制。 ...
4. **使用工具类或库**:例如,Apache Commons Lang库提供了`BeanUtils.copyProperties()`方法,可以方便地将一个对象的所有属性复制到另一个对象。这种方法简单易用,但需要注意的是,如果源对象和目标对象有属性...
3. **批量属性复制**:`copyProperties()`方法可以快速地将一个对象的所有属性复制到另一个对象中,这在对象模型相同或相似的情况下非常有用,极大地提高了开发效率。 4. **内建集合操作**:BeanUtils还支持对集合...
Apache Commons BeanUtils库简化了这些操作,它提供了如`BeanUtils.copyProperties()`这样的方法,可以方便地将一个对象的属性值复制到另一个对象。此外,`PropertyUtils`类提供了更细粒度的属性操作,如`...
Apache Commons BeanUtils库提供了`BeanUtils.copyProperties()`方法实现Bean到Bean的转换,而Map到Bean的转换可以借助`Dozer`或`ModelMapper`库。这些工具可以帮助我们在数据绑定和对象映射中节省大量工作。 4. **...