首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

第三十章:SpringBoot使用MapStruct自动映射DTO

该实现使用纯java方法调用的源和目标对象之间的映射,MapStruct节省了时间,通过生成代码完成繁琐和容易出错的代码逻辑。...我们使用idea开发工具创建一个SpringBoot项目,添加相应的依赖,pom.xml配置文件如下所示: ...省略部分代码 org.springframework.boot...Maven依赖,而官方文档还提供了另外一种方式,采用Maven插件形式配置,配置如下所示: ...引用官方文档 ......我们的最终目的是为了返回一个自定义的DTO实体,那么我们就先来创建这个DTO,DTO的代码如下所示: package com.yuqiyu.chapter30.dto; import lombok.Data...我们采用了Spring方式获取Mapper,在自动生成的实现类上MapStruct为我们自动添加了@ComponentSpring声明式注入注解配置。

5.4K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    丢弃掉那些 BeanUtils 工具类吧,MapStruct 是真香!!!

    概述 “友情提示:MapStruct 和 Spring Boot 没有直接关系,单纯放在这个系列。 为了让应用的代码更易维护,我们往往会将项目进行分层。...3.1 引入依赖 修改 pom.xml 文件,额外引入 Lombok 相关依赖。 MapStruct 和 Lombok 的集成。 4. @Mapping 在对象转换时,我们可能会存在属性不是完全映射的情况,例如说属性名不同。...IDEA MapStruct Support 提供的具体功能,可以看下官方文档《MapStruct support for IntelliJ IDEA》,例如说: Completion for Properties...彩蛋 基本上,我们已经学习完了 MapStruct 的常用功能。如果想要更加深入,可以查看《MapStruct 官方文档》,真的是贼强大哈。

    2.2K50

    第五章:使用QueryDSL与SpringDataJPA实现查询返回自定义对象

    这种情况在传统的查询中我们无法控制查询的字段,只能全部查询出后再做出分离,这种也是我们最不愿意看到的处理方式,这种方式会产生繁琐、复杂、效率低、代码阅读性差等等问题。...构建项目 我们先来使用idea工具创建一个SpringBoot项目,预先添加相对应的依赖,pom.xml配置文件内容如下所示: 的表,所以这里不需要配置@Entity、@Table等JPA注解,仅把@Data注解配置上就可以了,接下来我们编译下项目让QueryDSL插件自动生成查询实体。...生成查询实体 idea工具为maven project自动添加了对应的功能,我们打开右侧的Maven Projects,如下图1所示: ?...图1 我们双击compile命令执行,执行完成后会在我们pom.xml配置文件内配置生成目录内生成对应实体的QueryDSL查询实体。生成的查询实体如下图2所示: ?

    4.6K40

    第二章:使用QueryDSL与SpringDataJPA实现单表普通条件查询

    构建项目 下面我们先来创建一个SpringBoot项目,具体如何使用Maven整合QueryDSL请访问QueryDSL学习目录第一章,创建项目时的依赖也与第一章一致,pom.xml配置文件如下代码块所示...在上面的实体源码中可以看到@Data注解是在lombok包内,lombok其实是一个优雅的第三方插件,它可以让你的实体变得简洁,可读性也大大的得到了提升。...在使用这个插件的时候需要你们Idea开发工具支持,必填安装相应的Plugin才可以,这里我就不多说相关lombok的配置问题了,大家在跟本章联系的时候可以使用Getter/Setter方法的形式代替@Data...自动生成Q结构查询实体 我们之前说过了QueryDSL很神奇的地方就在于它是一个可通过Maven插件自动生成实体类型的结构查询实体,那么我们接下来使用maven compile命令来让我们配置的JPAAnnotationProcessor...图2 maven插件会为我们自动创建一堆目录,我们的查询实体的位置是以我们pom.xml配置文件内配置的目录为准。

    1.6K20

    第四十四章: 基于SpringBoot & AOP完成统一资源自动查询映射

    构建项目 本章使用到的依赖相对来说比较多,大致:Web、MapStruct、SpringDataJpa、LomBok等,数据库方面采用MySQL来作为数据支持。...* 设置多个实例的资源信息 * @param objectList 需要设置资源的实例列表 */ void push(List objectList) throws...user-provider user-provider子模块目内我们预计添加一个查询用户详情的方法,在方法上配置@ResourceMethod注解,这样可以让切面切到该方法,然后在查询用户详情方法返回的对象类型内字段上添加...@ResourceMethod,让统一资源可以切面到该方法上,在selectByUserName方法内我们只需要去处理根据用户名查询的业务逻辑,通过MapStruct进行UserInfoEntity与UserDetailDTO...在方法返回对象时就会被资源自动处理分别将查询到的资源设置到UserDetailDTO内的headImage、backImage。

    1.5K90

    第七章:使用QueryDSL与SpringDataJPA实现子查询

    在上一章我们讲到了QueryDSL的聚合函数,让我们重新认识了QueryDSL的便利之处,它可以很好的使用原生SQL的思想来进行Java形式的描述,编写完成也不需要考虑更换数据库存在的不兼容问题。...构建项目 我们使用idea工具创建一个SpringBoot项目,然后添加部分依赖并配置QueryDSL自动生成QueryBean插件,pom.xml代码如下所示: <?..." xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd...SpringDataJPA注解配置,如下所示: 商品类型实体 package com.yuqiyu.querydsl.sample.chapter7.bean; import lombok.Data;...总结 以上内容就是本章的全部内容,我们使用三个简单的例子来讲述了QueryDSL子查询,QueryDSL完美的将原生的SQL编写方式转移到了Java程序内,内置了几乎所有的原生SQL的函数、关键字、语法等

    5.2K12

    第六章:使用QueryDSL的聚合函数

    在企业级项目开发过程中,往往会经常用到数据库内的聚合函数,一般ORM框架应对这种逻辑问题时都会采用编写原生的SQL来处理,而QueryDSL完美的解决了这个问题,它内置了SQL所有的聚合函数下面我们简单介绍我们常用的几个聚合函数...本章目标 基于SpringBoot平台整合QueryDSL完成常用聚合函数使用。 构建项目 我们使用idea来创建一个SpringBoot项目,pom.xml配置文件依赖如下所示: lombok.Data; import javax.persistence.*; /** * ======================== * Created with IntelliJ...我们的实体已经创建完成,下面我们开始使用maven compile命令完成QueryDSL查询实体的创建,我们找到Maven Projects窗口,展开Lifecyle组,双击compile命令即可,如下图...users userbean0_ 到现在为止我们得出来了一个结论,如果原生SQL内聚合函数是作用在字段上,在QueryDSL内使用方法则是查询属性.xxx函数,那么接下来的聚合函数作用域就不是字段了而变成了表

    3.6K20

    Java对象属性复制组件-Mapstruct的项目改造指南

    本文介绍下Java对象属性复制组件(MapStruct),以及项目中引入遇到的坑。 1. 问题背景 日常编程中,经常会碰到对象属性复制的场景,就比如下面这样一个常见的三层MVC架构。 ?...如何引入MapStruct 只需要引入MapStruct的依赖,同时由于MapStruct需要在编译器期间生成代码,所以我们需要maven-compiler-plugin插件中配置。...如果项目中没有用到lombok,下面的lombok相关配置可以删除;如果用到lombok,由于MapStruct和Lombok都会在编译期间生成代码,为解决冲突使用如下配置即可。.../ 为了防止lombok和MapStruct的冲突,在pom.xml加入如下配置 ...说明: 之所以要升级lombok版本,是因为上面UserDto对象转化为LoginEventDto对象时,原有项目只在UserDto上添加@Builder,但是继承类LoginEventDto无法继承

    2.9K41

    springboot第4集:springboot模块化开发与项目搭建流程

    创建 Maven 项目:使用 Maven 构建工具创建一个空的项目,在 pom.xml 文件中添加 Spring Boot 的依赖。...${mapstruct.version} 是一个变量,将在 Maven 配置文件中设置它的值。...org.mapstruct:mapstruct-processor 也是 MapStruct 库的依赖项。该库提供了编译时生成代码的功能,以便进行更好的类型检查和保证正确性。...当您创建一个新的Spring Boot项目时,可以使用Archetype来快速设置项目的基本结构和依赖。 选择合适的Archetype取决于您的需求和项目类型。...编写测试代码:编写单元测试和集成测试代码,确保项目的正确性和安全性。 打包部署:使用Maven打包项目,并将其部署到服务器上。

    83431

    第四章:使用QueryDSL与SpringDataJPA实现多表关联查询

    为了方便分离文章源码,我们创建完成后把第三章的application.yml配置文件以及pom.xml依赖内容复制到本章项目中(配置内容请参考第三章)。...SpringDataJPA注解配置,商品类型实体如下所示: package com.yuqiyu.querydsl.sample.chapter4.bean; import lombok.Data;...构建QueryDSL查询实体 下面我们使用maven compile命令来自动生成QueryDSL的查询实体,我们在执行命令的时候会自动去pom.xml配置文件内查找JPAAnnotationProcessor...我们找到idea工具的Maven Projects窗口,如下图1所示: ? 图1 我们双击对应的命令就可以执行构建项目了,构建完成的查询实体如下图2所示: ?...总结 本章的内容比较简单,我们使用QueryDSL完成了两个实体关联查询并返回单实体实例的方法,QueryDSL内也有LeftJoin、InnerJoin等关联查询不过都是基于具体实体类型来完成的,本章就不做解释了

    3.2K30

    利用前端编译简化Feign降级代码

    业务方希望我能够解决他们这个问题 这个demo放到了github上: refine-class 实现的方案 方案1: 抽离一个专门回退的Client 需要回退的方法就抽出来和其他的隔离一下,但是业务方提出...因为我不认同这种方案,没有深入思考 方案3: 利用APT技术,业务写抽象类,编译器自动完善 思路来源于lombok,mapstruct框架,编译期进行代码完善 mapstruct利用的freemarker...,核心代码都在这里 refine-example 样例模块,测试是否与lombok兼容(兼容的) 基本流程 开发时,写一个Client的抽象类,将需要降级的代码编写 在抽象类上加一个注解进行标记: Demo...注意事项 这里编写的代码是编译器的,api和运行期的不太一样,反射那套api是绝对不能用的 mapstruct的功能强大所以代码也比较复杂,因此对于 RefineContext#buildMethodInfo...中增加一个Remote JVM Debug; 端口号设置为8000(参考网上设置的端口号,非必须) 首次需要在根目录下maven compile/install一下,或者直接根目录下Debug Maven

    36260

    Spring Boot | 集成MapStruct实现不同类型Java对象间的自动转换

    @Mapping 用于标注接口方法或者参数,指示源属性与目标属性之间的映射关系。可以通过source和target属性指定源和目标属性的名称。...unmappedTargetPolicy属性:指定目标对象中未映射属性的处理策略。默认为IGNORE,表示忽略未映射的属性。其他可选值包括WARN、ERROR和REPORT。...集成MapStruct 添加MapStruct依赖 修改pom.xml文件,添加如下代码: ......String usercode; private String name; } 复制代码 说明: 实体类和DTO类的属性(类型、名称)完全相同。...笔者汪小成截取了toDto(...)和toDtoList(...)两个方法的实现,如下图: 简单封装 在Spring Boot项目中,我们可以将Entity与DTO间转换的方法提取到一个基础转换器中,

    3K20

    干掉 BeanUtils!试试这款 Bean 自动映射工具,真心强大!!

    MapStruct 是一个代码生成器,它和 Spring Boot、Maven 一样也是基于约定优于配置的理念,极大地简化了 Java bean 之间数据映射的实现。...MapStruct 的优势: 1、MapStruct 使用简单的方法调用生成映射代码,因此***速度非常快***; 2、类型安全,避免出错,只能映射相互映射的对象和属性,因此不会错误将用户实体错误地映射到订单...DTO; 3、只需要 JDK 1.8+,不用其他任何依赖,自包含所有代码; 4、易于调试; 5、易于理解; 支持的方式: MapStruct 支持命令行编译,如:纯 javac 命令、Maven、Gradle...MapStruct 实战 本文栈长基于 IntelliJ IDEA、Spring Boot、Maven 进行演示。 基本准备 新增两个数据库 DO 类: 一个用户主类,一个用户扩展类。...插件相关配置: MapStruct 和 Lombok 结合使用会有版本冲突问题,注意以下配置。

    79610

    第十四章:QueryDSL与SpringDataJPA共同服务于SpringBoot

    QueryDSL可以应用到NoSQL数据库上,QueryDSL查询框架可以在任何支持的ORM框架或者SQL平台上以一种通用的API方式来构建SQL。...图4 配置QueryDSL 我们在SpringBoot项目内使用queryDSL需要导入maven依赖以及添加maven插件,修改pom.xml配置文件添加querydsl依赖以及插件如下图5所示: ?...图5 上面我们导入的querydsl的maven依赖,下面的插件很重要,当我们执行maven compile命令的时候,queryDSL这个插件会自动在我们配置的目录下生成Qxxx结构化查询实体对象,querydsl...生成Query查询对象 我们上面导入工作已经做完,接下来我们需要让maven执行querydsl的插件自动生成查询实体对象,我们需要先配置项目的maven命令,添加一条compile,点击:Run ->...图6 配置完成后点击“Apply”后就已经配置好了,接下来我们运行maven compile命令,点击IntelliJ IDEA工具右上角选择maven compile执行,如下图7所示: ?

    2K40
    领券