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

Java实体类之间的转换

一.为什么要转换实体类

通常在后端开发中经常不直接返回实体Entity类,经过处理转换返回前端,前端提交过来的对象也需要经过转换Entity实体才做存储。

二.怎么转换

使用的BeanUtils.copyProperties方法虽然可以实现转换,但是比较粗暴,不仅效率低下(使用反射)而且仅映射相同名的属性,多数情况下还需要手动编写对应的转换方法实现。插件MapStruct以接口方法结合注解优雅实现对象转换,MapStruct生成器生成代码以更贴近原生的Setter、Getter方法处理属性映射更为高效。

三.MapStruct的使用

如下示例:

实体类User:

@Data
@AllArgsConstructor
public class User {private int id;private String name;private int age;private String address;
}

转换后的类UserVO:

@Data
public class UserVO {private String userName;private int age;
}

转换接口:

@Mapper
public interface UserConvert {UserConvert INSTANCE = Mappers.getMapper(UserConvert.class);@Mapping(source = "name", target = "userName")UserVO toVO(User entity);
}

使用方法:

@Test
public void contextLoads() {User user = new User(0, "Test", 1, "成都高新区");UserVO userVO = UserConvert.INSTANCE.toVO(user);
}

如果有多个字段需要转换的话,使用@mappings注解,如下:

@Mapper
public interface UserConvert {UserConvert INSTANCE = Mappers.getMapper(UserConvert.class);@Mappings({@Mapping(source = "name", target = "userName"),@Mapping(target = "age", target = "age")")})UserVO toVO(User entity);
}

http://www.lryc.cn/news/327876.html

相关文章:

  • ESCTF-Web赛题WP
  • 某物登录表单加密
  • 2024java面试题
  • FebHost:什么是哈萨克斯坦.KZ域名?
  • python(一)网络爬取
  • 港大新工作 HiGPT:一个模型,任意关系类型 !
  • Git版本管理使用手册 - 5 - Git的.ignore文件语法
  • 使用Spring Cloud Gateway构建API网关,实现路由、过滤、流量控制等功能。
  • Matlab|电动汽车充放电V2G模型
  • <QT基础(4)>QLabel使用笔记
  • 2016年认证杯SPSSPRO杯数学建模C题(第二阶段)如何有效的抑制校园霸凌事件的发生全过程文档及程序
  • 前端理论总结(css3)——css优化的方法
  • 项目立项管理
  • QT的学习
  • redis在docker安装并启动流程
  • Spring高频面试题
  • Qt篇——Qt无法翻译tr()里面的字符串
  • 农村分散式生活污水分质处理及循环利用技术指南
  • 深圳区块链交易所app系统开发,撮合交易系统开发
  • 使用Shell脚本进行MySql权限修改
  • 项目中线程池的应用
  • 前端 JS 压缩图片的思路(附源码)
  • C语言结合体和枚举的魅力展现
  • 基于STC12C5A60S2系列1T 8051单片机通过单个按键单击次数实现开关机应用
  • 静态住宅IP优缺点,究竟要怎么选?
  • day07-缓存商品、购物车
  • 平台介绍-搭建赛事运营平台(3)
  • 数值分析复习:逼近理论的应用——最小二乘问题、解超定、欠定方程组
  • 设计模式-设配器模式
  • BEVFormer v2论文阅读