mapstruct对象转化
在我们使用阿里巴巴dubbo的时候,我们一般使用三种不同类型的对象,与数据库打交道的entity对象,还有service层使用dto对象,controller中接收前端json数据的vo对象
entity:与数据库表的字段一一对应,不允许添加自定义的属性
dto:controller与service交互的对象,controller调用service中方法的时候,需要将controller中的vo先转化为dto,然后将dto作为service方法的参数,可以向对象中任意添加属性,并且entity对象中的属性它都有
vo:与前端传过来的json一一对应
1依赖
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.0.Final</version>
</dependency>
2 用法
使用方法很简单,只需要创建一个接口,在接口上加上注解@Mapper
@Mapper
//注解的不要导错了,它是mapstruct包下的mapper
public interface AuthorizationPrivilegeConvert {
//获取接口的一个实例,实例是系统自动生成的
AuthorizationPrivilegeConvert INSTANCE = Mappers.getMapper(AuthorizationPrivilegeConvert.class);
//方法名自定义,它是根据参数类型和返回类型生成转化的具体实现
PrivilegeDTO entity2dto(AuthorizationPrivilege entity);
AuthorizationPrivilege dto2entity(PrivilegeDTO dto);
//list集合也可以相互转化
List<PrivilegeDTO> entitylist2dto(List<AuthorizationPrivilege> authorizationRole);
}
在需要进行对象转化的地方使用类似下面代码就可以了,非常方便
List<PrivilegeDTO> privilegeDTOS = AuthorizationPrivilegeConvert.INSTANCE.entitylist2dto(privileges);