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;
}
}
还没有评论,来说两句吧...