李锋镝的博客

  • 首页
  • 时间轴
  • 留言
  • 插件
  • 左邻右舍
  • 我的日常
  • 关于我
    • 关于我
    • 另一个网站
  • 教程
  • 赞助
Destiny
自是人生长恨水长东
  1. 首页
  2. 原创
  3. 正文

Java 为什么有这么多 “O”?

2025年5月16日 6点热度 0人点赞 0条评论

面试中被问到“Java为什么有这么多‘O’,比如PO、DTO、VO、BO”,我之前的回答不够系统,复盘时发现自己对这些“O”的理解和串联不够清晰。本文以一个基于Spring Boot + MyBatis的用户查询接口为例,解析各“O”的定位、必要性及对象转换优化方案。

一、场景:用户查询接口

需求:前端通过GET /user?userId=123查询用户信息,后端返回姓名和注册天数。
技术栈:Spring Boot + MyBatis。

二、请求链路分析

1. Controller层:入参是DTO

public class UserQueryDTO {
    private Long userId;
    private Integer page;
    private Integer size;
    // getters and setters
}

@RestController
public class UserController {
    private final UserService userService;

    @GetMapping("/user")
    public UserVO getUser(@RequestParam UserQueryDTO queryDTO) {
        return userService.getUserInfo(queryDTO);
    }
}

DTO(Data Transfer Object)角色:

  • 定位:数据传输对象,封装前端输入参数。
  • 作用:
    • 结构化参数,便于使用@Valid注解校验。
    • 避免多个参数散落在方法签名中,提升可读性。
除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/archives/article/4402

相关文章

  • 以面试官视角万字解读线程池10大经典面试题
  • 别再背线程池的七大参数了,现在面试官都这么问
  • 动态线程池框架DynamicTp使用以及架构设计
  • mybatis-plus-join-boot-starter介绍及用法
  • JVM参数-XX:InitialRAMPercentage 和 -XX:MaxRAMPercentage解析
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: JAVA 对象 面试
最后更新:2025年5月16日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇

文章评论

1 2 3 4 5 6 7 8 9 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 54 55 57 58 60 61 62 63 64 65 66 67 69 72 74 76 77 78 79 80 81 82 85 86 87 90 92 93 94 95 96 97 98 99
取消回复

COPYRIGHT © 2025 lifengdi.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Dylan

津ICP备2024022503号-3