DTO查询
之前我们介绍了,利用对象抓取器灵活控制被查询数据结构的形状。
现在,我们介绍一个与之等价的功能:查询DTO对象。
Jimmer提供了DTO语言。
提示
该语言本质上是对象抓取器的另外一种表达方式
利用该语言,开发人员可以快速以某个实体类型为聚合根定义多种数据结构的形状,编译器会为每种形状定义生成相应的Java/Kotlin DTO类。每个DTO类型都包含和原动态类型之间的彼此转化逻辑,以及一个和自身形状匹配的对象抓取器。
某些情况下,服务端查询出某种形状的数据后,并不是为了作为HTTP请求的返回,而是自己用,用来驱动后续的复杂的业务逻辑,这是采用这种方式的理想场合。
警告
注意,如果服务端查询某种形状的数据不是为了自己用,而是为了直接作为HTTP请求的返回值,则更推荐直接返回动态实体对象,并利用客户端篇中的方案自动生成开发体验很高的客户端代码。
定义DTO的形状
本文侧重于讲解如何查询静态DTO类型,并非系统性介绍DTO语言,请参考对象篇/DTO转换/DTO语言以了解完整的DTO语言。
假如Book类的全名为com.yourcompany.yourproject.model.Book,你 可以
-
在实体定义所在项目中,建立目录
src/main/dto -
在
src/main/dto下,建立文件Book.dto -
编辑此文件,利用DTO语言,定义Book实体的各种DTO形状
Book.dtoexport com.yourcompany.yourproject.model.Book
-> package com.yourcompany.yourproject.model.dto
BookDetailView {
#allScalars
store {
#allScalars
}
authors {
#allScalars
}
}
SimpleBookView { ...略... }
...省略其他DTO形状定义...