你这些代码,po和vo其实是没有区别的。相反我觉得vo在这里就是多余的,直接返回polist就完事了。

解决方案 »

  1.   


    在现有的业务系统中,vo中的属性<=po的属性,之所以不直接使用polist,是因为在控制层需要将list对象转化成json串传至前端(类似rest风格),而部分数据库列是不能生成在json串中,并且vo对象可以直接提供给第三方,po对象时不会给的
      

  2.   

    po和vo其实是没有区别的,本质上没什么,概念上可以有区分,但实际使用中,都没有什么
      

  3.   

     兄弟,你再VO装去转呗,直接写在实体类中,进行转换就ok了,1、在VO对象得到PO, 然后一个个set进去。2、再在VO中 写个如:  /**
     * 取得所有对应的bo列表
     * 
     */
    public List getAllPO() {
    List boList = new ArrayList(); boList.add(getBO());  // 这里getBO就是你先前set的对象。 return boList;
    }
      

  4.   

    楼主用的是spring吗?如果是spring的话可以采用AOP解决,可以将你的业务方法的返回值改为object,然后将需要转换的业务方法定义为切入点,使用spring的环绕增强 ,切入点你可以在spring的配置文件中定义//通过MethodInterfceptor实现环绕增强,关键代码如下
    public Object invoke(MethodInvocation invocation) throws Throwable{
           try{
                List<DeptVO> voList=new ArrayList<DeptVO>();
                  Object po=invocation.proceed();  //调用目标方法
                  BeanUtils.copyProperties(vo, po); 
           }
    }大概思路就这样,楼主可以测试下
      

  5.   

    上面少写一句try{
                List<DeptVO> voList=new ArrayList<DeptVO>();
                  Object po=invocation.proceed();  //调用目标方法
                  BeanUtils.copyProperties(vo, po); 
           }
      return  voList;//将你转换的后的对象返回出去 
      

  6.   


    感谢您的帮助,
    有个问题是,如何将一个List<po>集合对象的复制给List<vo>集合对象,BeanUtils好像不支持
      

  7.   

    如果你每个业务层都是返回List<DeptVO>类型对象的话,那就遍历复制
      

  8.   

    如果你每个业务层都是返回List<DeptVO>类型对象的话,那就遍历复制自己写了个公共方法,勉强能用,分享下public static List copyList (List <? extends Object> poList , Class voClass){

    List voList=new ArrayList();

    Object voObj =null;
    for(Object poObj:poList){
    try {
    voObj = voClass.newInstance();
    } catch (InstantiationException | IllegalAccessException e) {
    e.printStackTrace();
    }
    BeanUtils.copyProperties(poObj, voObj);
    voList.add(voObj);
    }
    System.out.println("1111"+voList.size());
    return voList;

    }调用
           List<DeptVO> voList=Util.copyList(poList, DeptVO.class);
      

  9.   

    如果你每个业务层都是返回List<DeptVO>类型对象的话,那就遍历复制这个前面好像讲过的,论坛里已经有这个问题的答案了