[alibaba/p3c]MyBatis联表查询的返回结果用什么类接收? DO? DTO?AO ?

2023-12-12 55 views
9
规约原文

【参考】分层领域模型规约:  DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。  DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。  BO(Business Object):业务对象,由 Service 层输出的封装业务逻辑的对象。  AO(Application Object):应用对象,在 Web 层与 Service 层之间抽象的复用对象模型, 极为贴近展示层,复用度不高。  VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。  Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止 使用 Map 类来传输。

问题描述

假设我的数据库实体类是DO,我在Mybatis中做联表查询。用到了 这些标签来做 一对多、多对一的映射关系。那么resultMap的 resultType要指定什么类呢?? 直接用DO的话,DO在原则上要和数据库字段一一对应,不能更改。 用DTO的话,DTO又只能在Service、Manager层。。 我就不知道用什么类了

修改建议

官方能不能针对规约原文的领域对象模型。做一个简单的Demo出来。。 寥寥几句话让人很困惑啊!

回答

5

我理解应该用BO 。biz层object的意思,关联查询结果,更接近于业务层

4

我的理解是DO应该和sql里的字段一一对应即可 但是因为DO一般是建表时自动生成的,无法随意更改 所以使用了DTO来接受查表的数据(后续也可以随意增删)

3

首先一张表对一个DO,表与表之间的关系(1:1, 1:n),可转换为DO和DO之间的关系(在一个DO里面定义一个属性,类型是另外一个DO)。 这样sql联表查询的结果,就是'主表'所对应的DO,只不过该'主表DO'中有关联的'子表对应DO'的属性