用 mybatis (用的 XML ,没有用 MybatisPlus )如果遇到了一些复杂的查询(比如连接多个表查询)有时候会返回一个多个表中的字段组成的 DTO 类用来接收结果,这个结果 DTO 一般也是直接返回给前端的,所以有时候就感觉这种方式好像有点不太符合分层隔离的规范呢?感觉这个 DTO 好像直接干穿了视图层,业务层和数据层呢。 所以想问问各位大佬,是使用方式不对呢?还是一般实践中就只能这样呢,有更好的方法吗?
hexagonal 也好, layer arch 也好,我们对应用进行分层不是最终目的,是为了方便理清依赖关系,解耦业务逻辑与外部依赖。这里的 DTO 所在的层(Domain/Query) 反正都会被 view 层依赖的,如没有其他需求,是可以直接用的,可以当作 view 层这个 对象的实现直接使用了 domain 层定义的对象(比如作为一个 alias )
@thevita 这里的点在于 "没有其他需求",这个假设在业务迭代中不总是成立的,如果直接复用,未来需要添加 VO 的时候就很麻烦,所以可以先这样: type alias 一下 type Vo=DTO (看语言和工具了,哪种方式好), 加一个空的 mapper, 以后有需求了,改起来也方便