Skip to content

Latest commit

 

History

History

springboot-mapping-mapstruct

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

springboot-mapping-mapstruct

依赖引入

        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>${org.mapstruct.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <annotationProcessorPaths>
                        <!-- MapStruct 注解处理器 -->
                        <path><!--编译时生成 *MapperImpl类-->
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${org.mapstruct.version}</version>
                        </path>
                        <!-- Lombok 注解处理器 -->
                        <path><!--添加lombok否则编译时会找不到符号-->
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                        <path><!--添加lombok-mapstruct-binding否则编译后属性不会进行赋值set or get-->
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok-mapstruct-binding</artifactId>
                            <version>0.2.0</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
    </build>

简单使用示例

先编写映射接口

//@Mapper
@Mapper(componentModel = "spring") // 使用 spring bean 管理
public interface UserMapper {

    UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);

    @Mapping(target = "name", source = "username")
    UserDTO toDto(User user);
}

测试示例

@RunWith(SpringRunner.class) //注入 spring bean 对象
@SpringBootTest
public class MapstructApplicationTests {

    @Autowired
    UserMapper userMapper;

    @Test
    public void test() {
        User user = new User();
        user.setUsername("李四");
        user.setPassword("123456");
        user.setSex("男");

        UserDTO userDTO1 = UserMapper.INSTANCE.toDto(user);
        System.out.println("userDTO1=" + userDTO1);

        //需要注释掉上面,多次拷贝会抛出空指针异常
        UserDTO userDTO2 = userMapper.toDto(user);
        System.out.println("userDTO2=" + userDTO2);
    }
}

输出结果:
userDTO1=UserDTO(name=李四, password=123456, sex=男)
userDTO2=UserDTO(name=李四, password=123456, sex=男)