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

网站推广排名外包飞天云服务器

网站推广排名外包,飞天云服务器,深圳市造价信息网,电子书网站 自己做精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot整合MapStruct教程 1. 什么是MapStruct? MapStruct是一个基于注解的Java代码生成器,用于对象属性映射的自动化实现。相比…

精心整理了最新的面试资料和简历模板,有需要的可以自行获取

点击前往百度网盘获取
点击前往夸克网盘获取


Spring Boot整合MapStruct教程

1. 什么是MapStruct?

MapStruct是一个基于注解的Java代码生成器,用于对象属性映射的自动化实现。相比手动编写映射代码,它可以:

  • 自动生成类型安全的映射实现类
  • 减少样板代码
  • 编译时生成代码(无运行时性能损耗)
  • 支持复杂映射场景(嵌套对象、类型转换等)

2. 环境准备

  • JDK 1.8+
  • Spring Boot 3.x
  • Maven/Gradle
  • IDE(推荐IntelliJ IDEA)

3. 整合步骤

3.1 添加依赖

pom.xml中添加:

<!-- MapStruct核心依赖 -->
<dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>1.5.5.Final</version>
</dependency><!-- 注解处理器(必须) -->
<dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.5.5.Final</version><scope>provided</scope>
</dependency>

如果使用Lombok,需要确保mapstruct-processor在lombok之后配置

3.2 创建实体与DTO

// User.java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private Long id;private String username;private String email;private LocalDateTime createTime;
}// UserDTO.java
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserDTO {private String username;private String email;private String formattedDate;
}

3.3 创建Mapper接口

@Mapper(componentModel = "spring")
public interface UserMapper {@Mapping(source = "createTime", target = "formattedDate", dateFormat = "yyyy-MM-dd HH:mm")UserDTO toDto(User user);@Mapping(source = "formattedDate", target = "createTime",dateFormat = "yyyy-MM-dd HH:mm")User toEntity(UserDTO dto);
}

注解说明:

  • @Mapper(componentModel = "spring"):生成Spring可注入的Mapper实现类
  • @Mapping:定义字段映射规则
  • 支持自动类型转换(如String <-> Date)

3.4 配置注解处理器(重要!)

在Maven的pom.xml中添加构建配置:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><annotationProcessorPaths><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.5.5.Final</version></path><!-- 如果有Lombok需要添加 --><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></path></annotationProcessorPaths></configuration></plugin></plugins>
</build>

3.5 使用Mapper

@RestController
public class UserController {@Autowiredprivate UserMapper userMapper;@GetMapping("/user")public UserDTO getUser() {User user = new User(1L, "john", "john@example.com", LocalDateTime.now());return userMapper.toDto(user);}
}

4. 验证结果

生成的实现类在target/generated-sources/annotations/目录下,编译后会生成类似:

@Generated
@Component
public class UserMapperImpl implements UserMapper {@Overridepublic UserDTO toDto(User user) {// 自动生成的映射逻辑}@Overridepublic User toEntity(UserDTO dto) {// 自动生成的映射逻辑}
}

5. 高级用法

5.1 自定义转换方法

@Mapper(componentModel = "spring")
public interface UserMapper {default String statusToCode(Status status) {return status.name().toLowerCase();}
}

5.2 多对象合并

@Mapping(source = "user.name", target = "name")
@Mapping(source = "address.city", target = "city")
UserInfo merge(User user, Address address);

5.3 嵌套映射

@Mapper(uses = AddressMapper.class)
public interface UserMapper {UserDTO toDto(User user);
}

6. 常见问题

Q: 为什么我的Mapper接口实现类没有生成?
A: 检查:

  1. 是否添加了mapstruct-processor依赖
  2. Maven是否执行了mvn clean compile
  3. IDE是否启用了注解处理

Q: 如何与Lombok配合使用?
A: 确保在pom.xml中Lombok配置在MapStruct之前

Q: 如何处理字段名称不一致的情况?
A: 使用@Mapping注解显式指定映射关系

7. 总结

通过整合MapStruct可以:

  • 减少80%以上的手动映射代码
  • 提升代码可维护性
  • 保持类型安全
  • 轻松处理复杂映射场景

建议在DTO/VO转换、微服务间数据传输等场景优先使用MapStruct。


提示:实际开发中推荐结合Spring Boot Validation进行数据校验,构建更健壮的应用程序。


文章转载自:

http://T5hAxxJc.pngph.cn
http://zsp85C1X.pngph.cn
http://srnhxhyA.pngph.cn
http://rbOLdSuQ.pngph.cn
http://HjDehOhR.pngph.cn
http://QT5YMJVZ.pngph.cn
http://OsKN6HVd.pngph.cn
http://jvpRkOn8.pngph.cn
http://PBzwYWKI.pngph.cn
http://l7D3OHmA.pngph.cn
http://VRjC18HN.pngph.cn
http://TRiy0tvH.pngph.cn
http://uf3j8SYn.pngph.cn
http://FU8Sm2Im.pngph.cn
http://8eYOegrB.pngph.cn
http://jAGC3PL2.pngph.cn
http://9jtUFBLj.pngph.cn
http://ItdRzyzs.pngph.cn
http://jEA2U8zh.pngph.cn
http://GlY42EFK.pngph.cn
http://k3IzHSIJ.pngph.cn
http://hlH1vcoe.pngph.cn
http://a7V6VIHy.pngph.cn
http://HKCj1OqI.pngph.cn
http://km2bi7eY.pngph.cn
http://DTMyNw8L.pngph.cn
http://DXU94UQJ.pngph.cn
http://upO0mXay.pngph.cn
http://oudEY3Qt.pngph.cn
http://gN7mkxBq.pngph.cn
http://www.dtcms.com/wzjs/676937.html

相关文章:

  • 做哪种网站流量上的快网站规划与建设 ppt
  • 网站服务器环境搭建做网站建设的一般在哪儿找
  • 青海建设局网站网站设计 联系
  • 深圳做网站(信科网络)办公室装修设计效果图免费
  • 专业的南京网站建设网站开发都用什么
  • 网站开发岗位简介网站建设艾瑞市场分析
  • 网站怎样绑定域名创意平面设计公司公司排名
  • 企业网站建设相关书籍在线阅读网络营销组合策略
  • 山东省住房城乡建设厅查询网站济南seo外包服务
  • 基于阿里云的网站开发佛山网站营销推广
  • 建设网站cmswordpress模板建站教程
  • 企业网站长度网站建设与运营成本
  • 网站添加悬浮二维码织梦iis7搭建网站教程
  • 周口网站建设费用注册网站时手机号格式不正确
  • 安亭网站建设哪里学网站建设推广
  • 太原建南站网页美化与布局教程
  • 如何制作虚拟网站虚拟主机装2个wordpress
  • 西安网站建设兼职一个主体可以备案几个网站
  • 学什么可以做响应式网站买友情链接
  • 关于建设网站群的报告网站 建设 计划书
  • 网站建设基础方案我国档案网站建设
  • 网站建站的作用南昌优易科 网站建设
  • 网站建设违约合同企业查询官网入口
  • 查询网站用什么做的营销型网站建设和规划
  • 网站二级目录打不开如何在已建设好的网站做修改
  • 设备上哪个网站做外贸推广业网站制作
  • 国外免费建站网站搭建备案上个人网站和企业网站的区别
  • 天津企业网站建设方案教育公司网站建设方案
  • 服务于中小企业建网站外贸网站建设及优化ppt模块
  • app网站开发长沙做网站推广的销售电话开场白