MapStruct-Plus 使用教程

MapStruct-Plus使用教程使用教程

  • 前言
    • 一、依赖包POM.xml文件
    • 二、实体类
    • 三、测试类
  • 总结


前言

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

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

官方文档

一、依赖包POM.xml文件

<properties>
    <java.version>19java.version>
    <mapstruct-plus.version>1.3.5mapstruct-plus.version>
    <lombok.version>1.18.30lombok.version>
properties>

<dependencies>
    <dependency>
        <groupId>io.github.linpeiliegroupId>
        <artifactId>mapstruct-plus-spring-boot-starterartifactId>
        <version>${mapstruct-plus.version}version>
    dependency>
    
    <dependency>
        <groupId>com.github.xiaoymingroupId>
        <artifactId>knife4j-openapi2-spring-boot-starterartifactId>
        <version>4.0.0version>
        <exclusions>
            <exclusion>
                <groupId>org.mapstructgroupId>
                <artifactId>mapstructartifactId>
            exclusion>
        exclusions>
    dependency>

dependencies>

<build>
    <plugins>
        <plugin>
            
            <groupId>org.apache.maven.pluginsgroupId>
            <artifactId>maven-compiler-pluginartifactId>
            <version>3.8.1version>
            <configuration>
                <source>${java.version}source>
                <target>${java.version}target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombokgroupId>
                        <artifactId>lombokartifactId>
                        <version>${lombok.version}version>
                    path>
                    <path>
                        <groupId>io.github.linpeiliegroupId>
                        <artifactId>mapstruct-plus-processorartifactId>
                        <version>${mapstruct-plus.version}version>
                    path>
                    
                    <path>
                        <groupId>org.projectlombokgroupId>
                        <artifactId>lombok-mapstruct-bindingartifactId>
                        <version>0.2.0version>
                    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();
    }

}

总结

   是真的香啊!

你可能感兴趣的:(java,开发语言,spring,boot,maven)