当前位置:首页 > java > 正文内容

MapStruct-Plus 使用教程

关中浪子3个月前 (08-27)java303
买泛域名SSL证书 送5斤装现摘猕猴桃一箱、同时提供技开源商城搭建免费技术支持。
泛域名ssl证书 239元1年送1个月、单域名39元1年,Sectigo(原Comodo证书)全球可信证书,强大的兼容性,高度安全性,如有问题7天内可退、可开发票
加微信VX 18718058521 备注SSL证书
【腾讯云】2核2G4M云服务器新老同享99元/年,续费同价

前言

提示:你还在使用MapStruct繁琐的配置吗?不妨试试Plus,只做增强,不做修改。


   Mapstruct Plus 内嵌 Mapstruct,和 Mapstruct 完全兼容,如果之前已经使用 Mapstruct,可以无缝替换依赖`


官方文档


一、依赖包POM.xml文件

<properties>
    <java.version>19</java.version>
    <mapstruct-plus.version>1.3.5</mapstruct-plus.version>
    <lombok.version>1.18.30</lombok.version>
</properties>
<dependencies>
    <dependency>
        <groupId>io.github.linpeilie</groupId>
        <artifactId>mapstruct-plus-spring-boot-starter</artifactId>
        <version>${mapstruct-plus.version}</version>
    </dependency>
    <!-- knife4j 版本4.0.0——SpringBoot版本兼容性 -->
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
        <version>4.0.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <!-- maven-compiler-plugin作用:指定 Java 版本、设置编码方式 -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>${lombok.version}</version>
                    </path>
                    <path>
                        <groupId>io.github.linpeilie</groupId>
                        <artifactId>mapstruct-plus-processor</artifactId>
                        <version>${mapstruct-plus.version}</version>
                    </path>
                    <!-- 将 Lombok 注解和 MapStruct 的映射注解进行绑定,使它们能够协同工作 -->
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok-mapstruct-binding</artifactId>
                        <version>0.2.0</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>



二、实体类

package com.example.mapstructplusdemo.model.entity;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
 * @Description : 实体类User
 * @Author : LiYan
 * @CreateTime : 2023/12/20 15:29
 */
@ToString
@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@AutoMapper(target = UserDto.class)
public class User {
    private String username;
    private int age;
    private boolean young;
}
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@Data
public class UserDto {
    private String username;
    // 属性名称不同时.
    @AutoMapping(target = "age")  
    private int ageB;
    private boolean young;
}



三、测试类

package com.example.mapstructplusdemo;
import com.example.mapstructplusdemo.model.entity.User;
import com.example.mapstructplusdemo.model.entity.UserDto;
import io.github.linpeilie.Converter;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class MapstructPlusDemoApplicationTests {
    @Autowired
    private Converter converter;
    @Test
    void contextLoads() {
        User user = new User()
                .setUsername("jack")
                .setAge(23)
                .setYoung(false);
        UserDto userDto = converter.convert(user, UserDto.class);
        System.out.println("userDto: "+ userDto);
        /**
         * 断言语句作用:验证代码的正确性。当断言失败时,会抛出AssertionError异常,
         *          提醒我们假设不成立,需修正。
         * 上线时,需删除,以提高代码的执行效率。
         */
        assert user.getUsername().equals(userDto.getUsername());
        assert user.getAge() == userDto.getAge();
        assert user.isYoung() == userDto.isYoung();
        User newUser = converter.convert(userDto, User.class);
        System.out.println(newUser);
        assert user.getUsername().equals(newUser.getUsername());
        assert user.getAge() == newUser.getAge();
        assert user.isYoung() == newUser.isYoung();
    }




总结

   是真的香啊!



找梯子最重要的就是稳定,这个已经上线三年了,一直稳定没有被封过,赶紧下载备用吧!

扫描二维码推送至手机访问。

版权声明:本文由码农翻生发布,如需转载请注明出处。

本文链接:https://lubojian.cn/post/277.html

分享给朋友:

相关文章

Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool2.impl.GenericObjectPoo 错误解决

Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool2.impl.GenericObjectPoolConfig at java.base/jdk.inte...

JAVA 基础练习题 JAVA教程 基础

1变量、运算符和类型转换:1.1手动输入一个学生的成绩,对这个成绩进行一次加分,加当前成绩的20%,输出加分后成绩        Scanner scan = new Scanner(System.i...

poi4.0.0读取excel文件时报java.lang.NoClassDefFoundError: org/apache/commons/compress/archivers/zip/ZipFile

最近想用poi写个处理excel的工具,看了一下poi的官网,出了个4.0.0的版本,于是想尝尝鲜,下载了一把poi4.0.0的bin。下载的是下面的文件: 下载完,将压缩包里所有的jar包导入到工程中(当然,如果只需要处理exc...

JWT实现认证和授权的原理 和小程序SESSION_KEY(第三方session)

目前的H5,公众号,小程序,APP,等登录授权方式都是JWT来实现的,就是用户在登录后后端返回一个token,然后下次请求时request头会带上token,然后后端根据此token来解析用户信息,总结下就3步。用户调用登录接口,登录成功后...

Maven下载、安装、环境变量配置教程【图文】详细教程

Maven下载、安装、环境变量配置教程【图文】详细教程

一、下载1、直接去官网下载即可,很轻量级大小就十来兆官方下载页面地址:http://maven.apache.org/download.cgi2、进去官网之后,就可以直接下载,提示:jdk1.8支持所有版本的Maven,所以不用担心兼容问题...

Spring Boot + MyBatis + MySQL 实现读写分离!不懂多看

Spring Boot + MyBatis + MySQL 实现读写分离!不懂多看

1、引言读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就是说应用程序...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。