场景:

控制层使用vo对象,数据层使用po对象,业务层负责将po对象转换成vo对象传递给控制层
vo和po对象之间转换可以用BeanUtils.copyProperties(vo, po);方法
如果数据层传递的是要给集合对象,譬如List集合,我是这么写的

Java code

?

1

2

3

4

5

6

7

8

List<DeptVO> voList=new ArrayList<DeptVO>();

List<DetPO> poList=dao.list();

DepartmentVO vo=null;

for(DeptPO po:poList){

vo=new DepartmentVO();

BeanUtils.copyProperties(vo, po);

voList.add(vo);

}

结果符合需求,但是每个业务模块都使用这种写法,感觉效率太低了,
各位有没有好的解决方案或思路,能给介绍下,万分感谢

如果是spring的话可以采用AOP解决,可以将你的业务方法的返回值改为object,然后将需要转换的业务方法定义为切入点,使用spring的环绕增强 ,切入点你可以在spring的配置文件中定义

1

2

3

4

5

6

7

8

//通过MethodInterfceptor实现环绕增强,关键代码如下

public Object invoke(MethodInvocation invocation) throws Throwable{

try{

List<DeptVO> voList=new ArrayList<DeptVO>();

Object po=invocation.proceed();  //调用目标方法

BeanUtils.copyProperties(vo, po);

}

return  voList;//将你转换的后的对象返回出去

}

自己写了个公共方法,勉强能用,分享下

Java code

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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);

vo与po的更多相关文章

  1. Java Bean、POJO、 Entity、 VO 、PO、DAO

    Java Bean.POJO. Entity. VO , 其实都是java 对象,只不过用于不同场合罢了.    Java Bean: 就是一个普通的Java 对象, 只不过是加了一些约束条件.  声 ...

  2. java的VO和PO的用途

    最近在搞一个项目,用到了 springMVC,加深了我对VO和PO的理解,有感而发. 1 写在之前的提示 VO == Value Object PO == Persistant Object VO对应 ...

  3. VO , PO , BO , QO, DAO ,POJO

    VO , PO , BO , QO, DAO ,POJO, O/R Mapping 是 Object Relational Mapping (对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定 ...

  4. 关于各种O,DO/BO/DTO/VO/AO/PO

    阿里巴巴Java开发手册 链接:https://pan.baidu.com/s/11I9ViOrat-Bw_HA8yItXwA 密码:x5yi 2. DO/BO/DTO/VO/AO/PO PO(per ...

  5. 关于VO、PO的理解——java的(PO,VO,TO,BO,DAO,POJO)解释

    O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据. 在O/R Mapping的世界里,有 ...

  6. 在Java中VO , PO , BO , QO, DAO ,POJO是什么意思

    在Java中VO , PO , BO, DAO ,POJO是什么意思 最近在项目中,遇到VO,我的天...那就一起学习回忆一下 首先简单说明下: O/R  Mapping是Object Relatio ...

  7. vo bo po dao pojo dto

    Recommended for you: Get network issues from WhatsUp Gold.  Not end users. DAO: Data access object d ...

  8. 【java编程】vo、po、dto、bo、pojo、entity、mode如何区分

    Java Bean:一种可重用组件,即“一次编写,任何地方执行,任何地方重用”.满足三个条件 类必须是具体的和公共的 具有无参构造器 提供一致性设计模式的公共方法将内部域或暴露成员属性 VO valu ...

  9. Java 中 VO、PO、DTO、BO、POJO、DAO 之间的区别与解释

    转载:https://www.cnblogs.com/hunmeng/p/11298680.html VO value object:值对象 通常用于业务层之间的数据传递,由new创建,由GC回收. ...

随机推荐

  1. C# 特性(Attribute)之Serializable特性

    转载自:https://www.cnblogs.com/GreenLeaves/p/6753261.html 介绍之前,先说一个重要的知识点: Serializable属性并不序列化类,它只是一个标签 ...

  2. 截止2017年,最新的全国行政区划代码数据源(xml)

    <?xml version="1.0" encoding="utf-8"?> <Root xmlns:xsd="http://www ...

  3. 接口自动化 基于python+Testlink+Jenkins实现的接口自动化测试框架

    链接:http://blog.sina.com.cn/s/blog_13cc013b50102w94u.html

  4. @EnableEurekaServer无法正常import原因是spring-cloud-dependencies版本太低

    去maven repository 库里 http://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-depend ...

  5. apache2.4+php7.3.2+mysql5.7

    一.下载php7和apache2.4 1 首先下载php7的windows压缩包,到这里下载http://windows.php.net/download/ 我选择的是php7的这个版本,由于它是vc ...

  6. Python import与from import使用及区别介绍

    Python程序可以调用一组基本的函数(即内建函数),比如print().input()和len()等函数.接下来通过本文给大家介绍Python import与from import使用及区别介绍,感 ...

  7. 多对多manytomany

    ----------------------多对多manytomany 要点: 多对多必须有mappedBy,让一个端维护关系 多对多会创建一张关系表,维护关系就是维护第三张表. 所以增加关系,则在集 ...

  8. 如何获取微信小店小程序的AppID

    2017年11月16日,微信有一个重磅的宣布:为了帮商家在微信内快速开店,方便商家和用户之间沟通,所有认证公众号,可快速创建微信小店小程序.这个改变是否能给微信小店带来新的生机?还需要时间的考验.微信 ...

  9. 理解Linux文件权限

    任何完整的系统都应该具备有某种形式的安全性.必须用过某种机制来保护文件不被未授权的用户查看或修改:Linux系统遵循了Unix的文件权限的方法,来根据用户与用户组授权,实现文件安全访问. 1.Linu ...

  10. 初见Hadoop—- 搭建MyEclipse 访问HDFS 上的文件

    因公司项目需要,开始接触大数据分析这块知识.网上关于大数据这块的知识还是比较多的.学习了一个礼拜了,再次记录一下,自己的学习过程,希望可以帮助后学者少走一些弯路. 服务端的配置,由于公司项目经理已经配 ...