当前位置: 首页 > news >正文

DTO 命名规范指南

在项目实践中,将查询对象返回对象都使用 DTO 后缀是可以的,但通常有更清晰的命名规范,帮助区分两者的作用。

🚨 推荐的命名规范

  1. 请求数据(查询参数、请求体等) → 使用 Request / Query 后缀
  2. 返回数据(响应体、结果对象等) → 使用 DTO / Response 后缀

🟢 示例

查询对象(Request/Query)

  • UserQuery / UserRequest
  • OrderSearchRequest
  • ProductFilterDTO(少数场景下也可用 DTO

返回对象(DTO/Response)

  • UserDTO / UserResponse
  • OrderDetailDTO
  • ProductInfoDTO

🔎 示例代码

UserQuery(查询参数)

public class UserQuery {
    private String username;
    private String email;
    private Integer age;
    
    // getters and setters
}

UserDTO(返回对象)

public class UserDTO {
    private String username;
    private String email;
    private String roleName;

    public UserDTO(String username, String email, String roleName) {
        this.username = username;
        this.email = email;
        this.roleName = roleName;
    }

    // getters and setters
}

Controller 示例

@RestController
@RequestMapping("/api/users")
public class UserController {

    @GetMapping("/search")
    public ResponseEntity<List<UserDTO>> searchUsers(UserQuery query) {
        List<UserDTO> users = userService.findUsers(query);
        return ResponseEntity.ok(users);
    }
}

⚙️ 为什么区分更好?

可读性更强UserQuery 明确表示它是请求数据,UserDTO 表示它是响应数据。
维护性更好:在项目规模变大时,区分两者有助于快速定位和理解代码。
更符合开发习惯:例如 Spring BootMyBatis-PlusSwagger 等主流框架多推荐这种规范。

🧑‍💻 统一使用 DTO 后缀的变通方式

  • 查询对象 ➔ UserQueryDTO
  • 返回对象 ➔ UserResultDTO / UserDetailDTO

🚀 最佳实践是采用更具语义化的命名方式,如 Request / DTO / Response,让代码更易读、易维护。


文章转载自:

http://K3fTdIM6.gprzp.cn
http://jbXk2K0e.gprzp.cn
http://CUX5kTZl.gprzp.cn
http://laTEmOzA.gprzp.cn
http://txbyBX5Q.gprzp.cn
http://xLPlF9Gx.gprzp.cn
http://RM5t4cgN.gprzp.cn
http://DUlPFTit.gprzp.cn
http://kKYHPOYV.gprzp.cn
http://rBfUY6b7.gprzp.cn
http://cBQWvilz.gprzp.cn
http://XA5d1Pmo.gprzp.cn
http://S9i584iJ.gprzp.cn
http://Zi2I6QQN.gprzp.cn
http://DyuM81ed.gprzp.cn
http://pVooQEzC.gprzp.cn
http://ClEhoiJh.gprzp.cn
http://UTpt38g8.gprzp.cn
http://sLJPaupG.gprzp.cn
http://9lB7iV8D.gprzp.cn
http://NebB5Gdj.gprzp.cn
http://2yntGOnX.gprzp.cn
http://4on3Nxt2.gprzp.cn
http://ePDR4cy9.gprzp.cn
http://i21uCrFE.gprzp.cn
http://aw16qtuc.gprzp.cn
http://Daa6U5Ww.gprzp.cn
http://fxZJQcNz.gprzp.cn
http://xkldOmqe.gprzp.cn
http://i1oLexul.gprzp.cn
http://www.dtcms.com/a/57474.html

相关文章:

  • 达梦数据库学习笔记@3
  • Unity DOTS 从入门到精通之 创建实体
  • Unity引擎使用HybridCLR(华佗)热更新
  • LangChain构建语言模型驱动应用的强大框架
  • 深入理解Linux网络随笔(四):内核是如何与用户进程协作的(下篇:多路I/O复用模型epoll)
  • c语言笔记 数组进阶题目的理解
  • 网络基础(一)【网络发展/认识协议/网络 VS 系统/以太网通信原理/重谈协议/网络中的地址管理】
  • 15 HarmonyOS NEXT UVList组件开发指南(二)
  • 先序二叉树的线索化,并找指定结点的先序后继
  • 1-1 驱动开发HelloWorld
  • 【定制开发】碰一碰发视频系统定制开发,支持OEM
  • 【Java】认识String类、字符串不可变性 + StringBuilder和StringBuffer —— 有码有图有真相
  • Java多线程与高并发专题——关于CopyOnWrite 容器特点
  • Cursor 使用经验,一个需求开发全流程
  • Spring为什么要用三级缓存解决循环依赖?
  • Django模板语法及静态文件
  • 阿里云CTF2025 ---Web
  • Javascript 基础数据类型
  • AI多模态教程:DeepSeek多模态模型解析及实践指南
  • python re正则表达式
  • 分布式锁—7.Curator的分布式锁二
  • 前端知识点---前端里的接口
  • dp_走方格(包含dfs分析,记忆化搜索)
  • 数据结构第六节:二叉搜索树(BST)的基本操作与实现
  • 深入解析 BitBake 日志机制:任务调度、日志记录与调试方法
  • 达梦数据库在Linux,信创云 安装,备份,还原
  • 在Vue中,onLoad,onShow ,mounted的区别
  • go并发学习笔记
  • Java 大视界 -- 基于 Java 的大数据实时数据处理框架性能评测与选型建议(121)
  • 美杜莎:带多个解码头的简单LLM推理加速框架