李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 读书观影
  • 系列
  • AI工具集
  • 论坛
  • 友圈
    • 友链
    • 朋友圈
    • 游客中心
  • 留言
    • 留言
    • 走心评论
  • 关于
    • 关于本站
    • Now
    • 每日心情
    • 网站地图
    • 网站统计
    • 赞助
  • 星球穿梭
  • 🚇开往
静亦定 动亦定
惟坚韧者始能遂其志
  1. 首页
  2. 原创
  3. 正文

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

2025年5月16日 225 0 1
本文最后更新于 2025年5月16日,距今已 530 天,其中的信息可能已经发生变化,请注意甄别。

面试中被问到“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注解校验。
    • 避免多个参数散落在方法签名中,提升可读性。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
分享到

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

也可使用浏览器菜单中的「分享」功能

微信扫一扫分享

标签: JAVA 对象 面试
最后更新:2025年5月16日

岁月同一天 10 月 29 日

回望过去的今天,你在写什么

  • 百科
    1 年前 2025年10月29日
    夏令时

    一、读懂夏令时:起源、范围与利弊 夏令时本质是一种“人为调整地方时间”的制度,核心目的是利用夏季充足的日照,减少照明能源…

  • 后端
    1 年前 2025年10月29日
    Spring HTTP客户端演进:从RestTemplate到WebClient与RestClient

    在Spring生态中,HTTP客户端一直是连接服务、集成外部API的核心组件。从早期的RestTemplate到如今的W…

  • 后端
    1 年前 2025年10月29日
    从万级到千万级:排行榜系统的6种实现方案深度解析(含原理、优化与实战)

    在业务开发中,排行榜是一个高频需求——游戏中的战力榜、电商的销量榜、内容平台的点赞榜、社交产品的热度榜……看似简单的“排…

  • 其他
    2 年前 2024年10月29日
    你总要学会往前走

    可能你走错了路 可能你看错了人 可能你哭的最伤心的夜 突然变成了大人 可能你少了天真 可能你多了爱恨 希望你见过所有的混…

相关文章
  • 何谓重构?为何重构?2019年6月24日
  • 从万级到千万级:排行榜系统的6种实现方案深度解析(含原理、优化与实战)2025年10月29日
  • RocketMQ的push消费方式实现详解2022年8月9日
  • Spring中@NotNull、@NotBlank、@NotEmpty的区别2019年7月2日
  • UUID太长怎么办?快来试试NanoId2022年3月31日

李锋镝

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

打赏 点赞
< 上一篇
下一篇 >
1234567891112131415161718192021222324252627282930313233343536373839404142434446474849505152535455575859606162636465666769727476777879808182858687909293949596979899
取消回复
…

文章评论

  • GoodBoyboyLv 2

    Object(bushi)

    WindowsWindowsFirefox 131.0Firefox 131.0中国中国-湖南-长沙
    2025年6月23日
    00 回复
  • 秋风清,秋月明,落叶聚还散,寒鸦栖复惊。相思相见知何日?此时此夜难为情!
    入我相思门,知我相思苦,长相思兮长相忆,短相思兮无穷极, 早知如此绊人心,何如当初莫相识。

    听点儿音乐吧 朋友~
    文章目录
    最新 热点 随机
    最新 热点 随机
    AI的生成能力等于生产力吗? NGINX严重漏洞(CVE-2026-15176、CVE-2026-93479、CVE-2026-97205) Kratos-plus v1.1.27更新说明 php2shell远程执行漏洞修复(CVE-2026-109618 和 CVE-2026-109619) 聊一聊DeepSeek开放自研搜索API这事 Let's Encrypt宣布证书缩短至64天,手动时代彻底终结!
    给主题增加了游客中心功能心气没了,干什么都不得劲我觉得是时候公布我的导航网站了游本昌去世关于主题加载速度优化的一点儿小演进给主题增加了Now、每日心情、年度回顾、岁月同一天、随机漫步等功能
    一文详解微服务架构 Java整数运算 OSI模型及代表协议详解 Agent 开发完全指南:从核心原理到实战落地(2025 进阶版) 企业级自动化 Agent 架构深析:Prompt 演进驱动的智能工作流落地 WordPress缓存插件WP Fastest Cache、WP Rocket 、FlyingPress对比
    最近评论
    李锋镝 发布于 2 天前(10月27日) 没毛病
    李锋镝 发布于 2 天前(10月27日) AI还得人给它堆算力,而且现在放出来的AI都是阉割、限制版,不是完全体
    fairy 发布于 2 天前(10月27日) 这就没办法了,本身就是双刃剑。AI本身只是工具而已。
    Hary 发布于 3 天前(10月26日) AI能用AI完善它自己么,到时候程序员亲手把自己干掉了
    海风心情 发布于 3 天前(10月26日) 生成能力只是起点,价值还得靠落地和验证,中间那些环节才是真功夫。
    标签聚合
    WordPress JVM 架构 数据库 JAVA AI编程 Claude 日常 AI MySQL Redis K8s 分布式 Theme IDEA ElasticSearch Spring SQL SpringBoot 多线程
    友情链接
    • sssr7844的博客
    • Mr.Sun的博客
    • 懋和道人
    • 老张博客
    • 彬红茶日记
    • Honesty
    • 韩小韩博客
    • 瓦匠个人小站
    • 哥斯拉
    • 知向前端
    • lijie blog
    • 韩情脉脉
    • 林羽凡
    • 皮皮社
    • 九仞之行
    • 搬砖日记
    • 志文工作室
    • Serendipity
    • 刘永博客

    COPYRIGHT © 2016-2026 lifengdi.com. ALL RIGHTS RESERVED.

    lifengdi.com 十年之约虫洞

    Domain age badge for lifengdi.com

    Theme Kratos-plus By Dylan Li

    津ICP备2024022503号-3

    京公网安备11011502039375号