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

dto 转entity方法

一、正确思路(先记住这句)

Controller 收 DTO → Service 转 Entity → Mapper 写表

永远不要让 DTO 直接进 Mapper。


二、最常用、最推荐的转换方式(✅ 强烈推荐)

✅ 使用BeanUtils.copyProperties

示例场景

DTO(比实体多两个字段)
publicclassUserSaveDTO{privateLonguserId;privateStringuserName;privateStringpassword;// DTO 多出来的字段privateStringconfirmPassword;privateStringcode;}
Entity
publicclassSysUserextendsBaseEntity{privateLonguserId;privateStringuserName;privateStringpassword;}

Service 中转换

@ServicepublicclassSysUserService{publicvoidsaveUser(UserSaveDTOdto){// 1. DTO -> EntitySysUseruser=newSysUser();BeanUtils.copyProperties(dto,user);// 2. 处理多余字段(DTO 有,Entity 没有)user.setCreateTime(newDate());// 3. 入库sysUserMapper.insert(user);}}

只复制同名同类型字段
✅ DTO 多的字段会被自动忽略
✅ 非常干净、可读性高


三、如果字段名不一样怎么办?

DTO

privateStringpwd;

Entity

privateStringpassword;

手动赋值即可

user.setPassword(dto.getPwd());

四、若依官方更优雅的方式(✅ 推荐)

若依里通常会这样写:

SysUseruser=BeanUtils.copyBean(dto,SysUser.class);

或直接封装一个convert方法:

publicclassUserConvert{publicstaticSysUsertoEntity(UserSaveDTOdto){SysUseruser=newSysUser();BeanUtils.copyProperties(dto,user);returnuser;}}

Service 中:

SysUseruser=UserConvert.toEntity(dto);sysUserMapper.insert(user);

✅ 解耦
✅ 好维护
✅ 后期加字段不怕乱


五、DTO 中带“校验字段”的正确处理方式(你现在的场景)

比如:

  • confirmPassword:只做校验
  • code:只做验证码校验
publicvoidsaveUser(UserSaveDTOdto){// 1. 校验 DTOif(!dto.getPassword().equals(dto.getConfirmPassword())){thrownewRuntimeException("两次密码不一致");}// 2. DTO -> EntitySysUseruser=newSysUser();BeanUtils.copyProperties(dto,user);// 3. 入库sysUserMapper.insert(user);}

校验用 DTO
持久化用 Entity
绝不混用


六、❌ 千万不要这样做(反例)

sysUserMapper.insert(dto);// ❌ 错误

❌ DTO 污染数据库
❌ 后期字段变动爆炸
❌ 不符合分层设计


七、进阶:MapStruct(企业级项目)

如果你项目规模大,推荐用MapStruct

@MapperpublicinterfaceUserConvert{SysUsertoEntity(UserSaveDTOdto);}

✅ 编译期生成代码
✅ 性能最好
✅ 类型安全

(若依 Cloud 版就在用)


八、一句话总结

DTO 接前端 → 手动 / BeanUtils 转 Entity → Entity 入库
DTO 多出来的字段,在 Service 里处理或忽略即可

如果你愿意,我可以帮你:

  • 写一个若依风格的 Convert 工具类
  • 看你现在 DTO 的字段,帮你设计最合理的转换方式
  • 讲清楚什么时候用 DTO / VO / Entity

你可以直接把你现在的 DTO 贴出来 👍

http://www.gsyq.cn/news/1424238.html

相关文章:

  • 抖音下载神器终极指南:一键获取无水印视频的完整教程
  • 银河麒麟V10系统下,用vsftpd搭建FTP服务器的保姆级避坑指南
  • 2025-2026年北京定制游旅行社推荐:口碑好的服务企业团建方案落地难案例 - 品牌推荐
  • 2026年杭州权威赋能教育学校评测:浙江青少年叛逆学校、浙江青少年夜不归宿、浙江青少年心理咨询学校、浙江青少年心理辅导学校选择指南 - 优质品牌商家
  • 如何告别多显示器鼠标跳跃?LittleBigMouse的智能DPI感知技术揭秘
  • 离线环境救星:手把手教你用DISM命令搞定Win10 .NET 3.5安装(告别0x8024402c错误)
  • 国内合规垫圈生产企业实测排行:防松垫圈、垫圈定制、DTI垫圈、压力指示垫圈、双叠自锁垫圈、接地垫圈、垫圈选择指南 - 优质品牌商家
  • Win11 WSL2 + Ubuntu 18.04:手把手教你配置ROS开发环境并跑通第一个rviz
  • 2026年5月留香沐浴露品牌推荐:十大排名运动后留香评测专业价格 - 品牌推荐
  • Sysinternals Autoruns实战:从“计划任务”里挖出潜伏的挖矿脚本(附排查思路)
  • 基于大语言模型的生成式智能体架构设计与应用实践
  • 2026年5月留香沐浴露品牌推荐:十大专业评测持久留香价格适用场景 - 品牌推荐
  • Hugging Face数据集实战指南:10大精选与NLP模型微调全流程
  • 2026年节日送礼毛绒玩具怎么选:五家优选品牌深度解析 - 科技焦点
  • 2026年5月工控主板厂家推荐:口碑好的产品解决产线频繁死机导致停产 - 品牌推荐
  • Kotlin 泛型
  • BI上线沦为摆设无价值,智能BI如何落地实效不做面子工程?
  • 2026年5月30全国沙发翻新优选匠阁、御匠、锦修上门换皮换布全解析,三大连锁品牌推荐靠谱哪家好?价格和方式 - 卓一科技
  • E图提取技术与e-boost框架在EDA中的高效应用
  • 2026年节日限定盲盒毛绒玩具怎么挑:五家优选品牌解析 - 科技焦点
  • 并网逆变器开发实战:从PR控制器到GaN功率级的设计与爆炸复盘
  • 告别CentOS思维:在银河麒麟V10上用源码编译PHP的正确姿势
  • 如何选择家用SUV车型?2026年5月推荐TOP5对比家庭出行案例评测价格 - 品牌推荐
  • 十分钟掌握暗黑2存档修改:d2s-editor终极指南让游戏体验焕然一新
  • 从Simulink仿真到SVM分类:电力故障数据生成与模型部署避坑指南
  • 2026年薪酬设计公司推荐:这几家靠谱又专业
  • Claude调用OR-Tools求解器的隐藏API文档(内部泄露版):5个未公开参数让求解速度提升3.2倍
  • 2026年齿轮减速机选型评测:冷却塔减速电机、冷却塔永磁电机、冷却塔电机、圆柱齿轮减速电机、永磁减速机、辊道减速机电机选择指南 - 优质品牌商家
  • 手把手教你用MMDetection 3.x复现EfficientDet的BiFPN模块(附代码逐行解析)
  • 中小型企业核心层网络改造实录:如何用VRRP+MSTP+OSPF解决单点故障和环路问题?