PO怎么转换成VO比较好呢?

abc45628 2018-10-18 04:31:47


//销售记录表
class Sale{
String id;
String customer;//客户id
}

class SaleVO{
String id;
String customerId;//客户id
String customerName;//客户name
}

class Customer{
String id;
String name;
}


SaleVO是前台展示页面,Sale是数据库表,Sale保存的时候客户只保存id,那么当我从数据库查数据出来的时候,Sale怎么转换成SaleVO比较好呢?

我现在是在DAO层写SQL代码的时候直接
select t.id, t.customer customerId, c.name customerName from sale t, customer c

但是当要转换的字段比较多的时候这么写就很烦人了,也很容易出错。

大家在遇到类似这种情况的时候是怎么做的,能不能给我说一下大家的思路。
...全文
766 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nayi_224 2018-10-25
  • 打赏
  • 举报
回复
可以用反射写一个bean转map、map转bean的工具类。 我的话,一般不写实体类,直接用Map了...
123212131232131 2018-10-25
  • 打赏
  • 举报
回复
我比较懒,一般是在 service 层 调用两次 DAO: 第一次调用 saleDAO 取出customerID, 第二次调用 customerDAO 取出customerName.
这种做法好处是:自己编码极少。 缺点是可能牺牲一点性能。
qq_40930108 2018-10-24
  • 打赏
  • 举报
回复
最简单的方法就是在一个实体类中加入需要显示的其他的属性,完全不用考虑其他因素,但不赞成用这种方式,可以按楼上说的做,如果没有用到框架,我这样完全可以应付了。
杀猪剑客 2018-10-18
  • 打赏
  • 举报
回复
dao用的hibernate还是mybatis?如果用的mybatis直接在xml文件写个<resultMap>就行。。如果是hibernate可以用hql
比如 select new SaveVo(...) from Sale s,Customer c where ...(提前要提供构造方法)。希望对你有帮助

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧