mapstruct使用

一、maven依赖
    
            org.mapstruct
            mapstruct-jdk8
            1.3.1.Final
        
        
            org.mapstruct
            mapstruct-processor
            1.3.1.Final
        
二、plugin插件

                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.8
                    1.8
                    UTF-8
                    
                        
                            org.mapstruct
                            mapstruct-processor
                            1.3.1.Final
                        
                        
                            org.projectlombok
                            lombok
                            1.18.12
                        
                    
                
            

注意:lombok插件必须同时配置,如果你使用了lombok插件的话

三、DTO以及DO定义
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserDO {
    private Integer useId;
    private String useName;
    private String useSex;
    private Integer useAge;
    private String userMovie;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserDto {
    private String useName;
    private String age;
    private String movie;
}
四、mapper定义
@Mapper
public interface ModelConvertor {
    ModelConvertor INSTANCE = Mappers.getMapper(ModelConvertor.class);
    /**
     * UserDO->userDTO
     * @param user userDO模型
     * @return userDTO实体对象
     */
    @Mappings({
            @Mapping(target = "age", source = "useAge"),
            @Mapping(target = "movie", source = "userMovie")
    })
    UserDto toUser(UserDO user);
}
五、使用
@RestController
@RequestMapping("/user")
@Slf4j
public class UseController {
    
    @PostMapping("/console")
    public ResultDTO queryUser(@RequestBody UserDto userDto) {
        return ResultDTO.success(userDto);
    }
    @PostMapping("/test")
    public ResultDTO test(@RequestBody User user) {
        UserDto userDto = ModelConvertor.INSTANCE.toUser(user);
        return ResultDTO.success(userDto);
    }
}

你可能感兴趣的:(mapstruct使用)