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

零食网站怎么做企业网站建设哪家正规

零食网站怎么做,企业网站建设哪家正规,重庆100强企业名单,网站建设产品价格虽然早就在用mapstruct了#xff0c;但因为要快速原型开发#xff0c;天天写builder模式#xff0c;感觉太长了#xff0c;不好看#xff0c;#xff08;然后最近被同事说丑了 #xff09;#xff0c;感觉还是做个总结#xff0c;怒转mapstruct 问题背景或前提知识 …虽然早就在用mapstruct了但因为要快速原型开发天天写builder模式感觉太长了不好看然后最近被同事说丑了 感觉还是做个总结怒转mapstruct 问题背景或前提知识 在现代软件开发中数据在不同层之间的转换是很常见的场景。这通常包括将数据实体Entity转换为数据传输对象DTO或反之。手动转换不仅效率低下而且容易出错。MapStruct作为一种解决方案通过自动生成映射代码来减少手动编写的需要。 在 Java 中除了使用 MapStruct 这样的库来自动化 bean 到 bean 的映射还有其他几种方式可以实现相同的目标。这些方法各有利弊适用于不同的场景 手动映射 最基本的方法是手动编写代码来映射对象。这意味着为每个需要映射的字段编写 get 和 set 方法调用。这种方法简单直观但当涉及到大量字段或频繁更改时会变得冗长且难以维护。 Apache Commons BeanUtils 使用 BeanUtils 类可以轻松复制属性值。这个库提供了方法来动态地复制对象之间的属性但它使用反射可能比编译时生成的代码慢。 技术名词解释 DTOData Transfer Object 用于应用层之间数据传输的对象。Entity 通常对应数据库中的表用于表示数据的持久化形式。MapStruct 一种代码生成工具它遵循约定大于配置的原则自动化生成类型安全的Bean映射代码。 具体代码与实现方法 User 实体类 import java.time.LocalDateTime;public class User {private String name;private String email;private String password;private LocalDateTime lastLogin;private Type type;private String streetName;// 构造方法getters 和 setters省略 }Type 枚举 public enum Type {ADMIN,USER,GUEST;// 枚举方法省略 }Address 类 (假设的) public class Address {private String street;private String city;private String zipCode;// 构造方法getters 和 setters省略 }UserDTO 类 import java.time.LocalDate;public class UserDTO {private String name;private String email;private String userStatus;private LocalDate registrationDate;private String status;private String userType;private String addressStreet;// 构造方法getters 和 setters省略 }MapStruct映射接口示例 接下来定义一个MapStruct接口UserMapper展示如何使用Mapping注解实现上述映射策略。 import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Named; import org.mapstruct.factory.Mappers;Mapper public interface UserMapper {UserMapper INSTANCE Mappers.getMapper(UserMapper.class);Mapping(target status, defaultValue NEW)Mapping(target registrationDate, expression java(java.time.LocalDate.now()))Mapping(target password, ignore true)Mapping(target userStatus, source user, qualifiedByName isActiveUser)Mapping(target userType, source type)Mapping(target addressStreet, source streetName)UserDTO userToUserDTO(User user);Named(isActiveUser)default String isActiveUser(User user) {return user.getLastLogin() ! null user.getLastLogin().isAfter(LocalDateTime.now().minusMonths(1)) ? Active : Inactive;}// 枚举映射方法和其他自定义逻辑可以根据需要添加 }在这个UserMapper接口中我们使用Mapping注解来实现了几种不同的映射策略 使用默认值为status字段设置了默认值NEW。使用表达式使用Java表达式为registrationDate字段设置当前日期。忽略字段忽略了password字段不将其包含在DTO中。使用条件映射通过自定义方法isActiveUser为userStatus字段设置值基于用户的lastLogin日期。直接映射和嵌套对象映射将userType从枚举Type映射并将streetName映射到addressStreet。 复杂点的处理 Mapper public interface UserMapper {UserMapper INSTANCE Mappers.getMapper(UserMapper.class);// 现有的单个User到UserDTO的映射Mapping(target addressStreet, source address.street)UserDTO userToUserDTO(User user, Address address);// 添加一个默认方法来处理列表转换default ListUserDTO usersToUserDTOs(ListUser users, ListAddress addresses) {ListUserDTO userDTOs new ArrayList();for (int i 0; i users.size(); i) {User user users.get(i);Address address addresses.get(i); // 假设列表是对齐的userDTOs.add(userToUserDTO(user, address));}return userDTOs;} } 未使用Mapping注解的字段处理: MapStruct默认会尝试自动映射那些在源对象和目标对象中名称和类型都相同的字段。如果字段名和类型在两个类中完全一致MapStruct会自动映射这些字段不需要显式使用Mapping注解。 对于名称或类型不匹配的字段如果没有通过Mapping注解指定映射规则这些字段将不会被自动映射也不会影响其他字段的映射。这意味着如果你不处理这些字段它们在目标对象中将保持默认值如null、0或false等。 原理 MapStruct在编译时生成实现映射接口的类。这个过程中它会检查源对象和目标对象的字段基于字段的名称和类型来自动生成映射代码。如果使用了Mapping注解MapStruct会根据注解提供的信息来生成相应的映射代码。这个过程完全在编译时完成因此运行时性能很好并且没有反射或运行时代理的开销。 总结和额外补充内容 MapStruct通过减少样板代码提高了开发效率并降低了出错概率。它支持多种复杂的映射情况包括但不限于默认值、常量、自定义方法以及多
http://www.zqtcl.cn/news/174222/

相关文章:

  • 做美食没有广告的网站o2o网站建设
  • 网站程序调试模式怎么做做汽车特卖会的网站
  • 怎么有自己的网站政务公开网站建设方案
  • 济南装饰行业网站建设成都地区网站开发成本
  • 宁波产品网站设计模板网站建设需要通过哪些审批
  • 了解网站建设管理网站开发的可行性研究报告
  • 淄博网站设计策划方案公司中文域名.网站
  • 综合网站系统电脑怎么做软件开发
  • 网站虚拟主持人制作国内网站建设排名
  • 上海房地产网站建设报价wordpress.备份
  • 网站建设运营维护合同专用车网站建设价格
  • 建设部咨询资质网站平台类网站建设公司
  • wap 网站 源码网站建立
  • 辽阳专业建设网站公司山东省工程建设招标信息网站
  • 下载专门做初中数学题的网站佛山网站制作在线
  • 永康物流网站蒙牛企业网站建设规划书
  • 网站开发发和后台开发有什么区别马鞍山网站建设价格
  • 广州建设银行预约公积金网站怎么下载ppt免费模板
  • 网站策划的基本过程网站设置在哪
  • 内蒙古住房和城乡建设网站网站建设需要购买什么
  • 网站做调查问卷给钱的兼职南通营销网站制作
  • 开个微网站需要什么自己制作网页的步骤
  • 有专业做线切割配件的网站吗中国婚恋网站排名
  • 做ppt网站大全中国工程建设信息网站
  • 汉滨区住房和城乡建设局网站淘宝客购物网站的怎么做
  • 一个网站用多个域名分页网站
  • 门户网站举例phpstuy wordpress
  • 做网站许昌美业管理软件系统排名
  • 温州市建设工程质量安全管理总站贵阳最新消息今天
  • 成都服装网站建设工作是否能给我们带来快乐