VO与PO之间的转换代码

 
import java.beans.PropertyDescriptor;
import java.util.Collection;

import org.apache.commons.beanutils.PropertyUtils;


/**
* CopyUtil
*/
public class CopyUtil {

/**
* Copy properties of orig to dest
* Exception the Entity and Collection Type
* @param dest
* @param orig
* @return the dest bean
*/
public static Object copyProperties(Object dest, Object orig) {
if (dest == null || orig == null ) {
return dest;
}

PropertyDescriptor[] destDesc = PropertyUtils.getPropertyDescriptors(dest);
try {
for ( int i = 0 ; i < destDesc.length; i ++ ) {
Class destType = destDesc[i].getPropertyType();
Class origType = PropertyUtils.getPropertyType(orig, destDesc[i].getName());
if (destType != null && destType.equals(origType)
&& ! destType.equals(Class. class )) {
if ( ! Collection. class .isAssignableFrom(origType)) {
try {
Object value = PropertyUtils.getProperty(orig, destDesc[i].getName());
PropertyUtils.setProperty(dest, destDesc[i].getName(), value);
} catch (Exception ex) {
}
}
}
}

return dest;
} catch (Exception ex) {
throw new CopyException(ex);
// return dest;
}
}

/**
* Copy properties of orig to dest
* Exception the Entity and Collection Type
* @param dest
* @param orig
* @param ignores 例如:vo.setUserName copy po.setUserName,应该写UserName
* @return the dest bean
*/
public static Object copyProperties(Object dest, Object orig, String[] ignores) {
if (dest == null || orig == null ) {
return dest;
}

PropertyDescriptor[] destDesc = PropertyUtils.getPropertyDescriptors(dest);
try {
for ( int i = 0 ; i < destDesc.length; i ++ ) {
if (contains(ignores, destDesc[i].getName())) {
continue ;
}

Class destType = destDesc[i].getPropertyType();
Class origType = PropertyUtils.getPropertyType(orig, destDesc[i].getName());
if (destType != null && destType.equals(origType)
&& ! destType.equals(Class. class )) {
if ( ! Collection. class .isAssignableFrom(origType)) {
Object value = PropertyUtils.getProperty(orig, destDesc[i].getName());
PropertyUtils.setProperty(dest, destDesc[i].getName(), value);
}
}
}

return dest;
} catch (Exception ex) {
throw new CopyException(ex);
}
}

static boolean contains(String[] ignores, String name) {
boolean ignored = false ;
for ( int j = 0 ; ignores != null && j < ignores.length; j ++ ) {
if (ignores[j].equals(name)) {
ignored = true ;
break ;
}
}

return ignored;
}
}



public class PO2VO extends TestCase {

/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
}

public void testPO2VO(){
TUserBasicVO vo = new TUserBasicVO();
TUserBasic po = new TUserBasic();
po.setPwd("111");
po.setUserName("222");
String[] a={"Pwd","UserName"};
try {
CopyUtil.copyProperties(vo, po,a);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(vo.getPwd());
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值