Spring Boot 配置MapStruct(实体映射工具)

1 MapStruct

MapStruct 就是这样的一个属性映射工具,只需要定义一个 Mapper 接口,MapStruct 就会自动实现这个映射接口,避免了复杂繁琐的映射实现。

2 Maven依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- mapstruct 实体映射工具 -->
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-jdk8</artifactId>
            <version>1.3.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>1.3.0.Final</version>
        </dependency>

3 实体类

3.1 UserEntity

用户信息实体类。

package com.entity;

import lombok.Data;
import org.springframework.stereotype.Component;

/**
 * 用户信息实体类
 */
@Component
@Data
public class UserEntity {
    private String username;
    private String password;
    private int sex;
}

3.2 UserVO

用户信息显示类。

package com.vo;

import com.entity.UserEntity;
import lombok.Data;
import org.springframework.stereotype.Component;

/**
 * 用户信息显示类
 */
@Component
@Data
public class UserVO extends UserEntity {
    private String sexName;
}

4 UserVOEntityMapStruct

用户信息Vo和Entity转换类。

package com.mapstruct;

import com.entity.UserEntity;
import com.vo.UserVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

/**
 * 用户信息
 * Vo和Entity转换类
 */
@Mapper
public interface UserVOEntityMapStruct {
    UserVOEntityMapStruct INSTANCE = Mappers.getMapper(UserVOEntityMapStruct.class);

    UserVO toUserVO(UserEntity userEntity);

    UserEntity toUserEntity(UserVO userVO);
}

5 调试代码

package com.controller;

import com.entity.UserEntity;
import com.mapstruct.UserVOEntityMapStruct;
import com.vo.UserVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MapStructController {

    @PostMapping("/testMapStruct")
    public UserVO testMapStruct(@RequestBody UserEntity userEntity) {
        UserVO userVO = UserVOEntityMapStruct.INSTANCE.toUserVO(userEntity);
        userVO.setSexName(userVO.getSex() == 1 ? "男" : "女");
        return userVO;
    }
}

6 调试结果

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值