MapStruct的使用详解与常见用法介绍

mapstruct在当前轻量级框架开发中的重点使用,@Named注解使用示例,@AfterMapping与@BeforeMapping注解的详细常见用法,在转换DTO时,与过去常用的beanUtil转换有高性能的转换优势,编译期自动生成的mapper实现类能够更加优雅的来实现各种隐式类型转换,以实现快速而又敏捷的开发,告别臃肿的手动get、set与类型的强转
 

引入依赖:

<lombok.version>1.18.26</lombok.version>
<mapstruct.version>1.4.2.Final</mapstruct.version>
<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct</artifactId>
    <version>${mapstruct.version}</version>
</dependency>
<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <version>${mapstruct.version}</version>
</dependency>

加入插件

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                    <showWarnings>true</showWarnings>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${mapstruct.version}</version>
                        </path>
                    </annotationProcessorPaths>
                    <compilerArgs>
                        <compilerArg>-Amapstruct.unmappedTargetPolicy=IGNORE</compilerArg>
                    </compilerArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

示例代码:

import com.cloudwise.douc.dto.DubboRoleUserPageReq;
import com.cloudwise.douc.dto.DubboRpcQueryParam;
import com.cloudwise.douc.dto.DubboUserDepartmentReq;
import com.cloudwise.knowledge.commons.bean.vo.douc.user.*;
import com.cloudwise.knowledge.commons.bean.vo.douc.vo.user.req.UserAliasReqVo;
import com.cloudwise.knowledge.commons.bean.vo.douc.vo.user.req.UserReqVo;
import com.cloudwise.knowledge.commons.bean.vo.douc.vo.user.resp.*;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

import java.util.List;

@Mapper
public interface UserConverter {

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


    /**
     *   vo请求参数装换为dubbo-api的参数类型
     */
    DubboUserDepartmentReq toDubboUserDepartment(UserReqVo userVo);

    @Mappings({
            @Mapping(source = "userName",target = "nameOrAlias" )
    })
    DubboRpcQueryParam toDubboRpcQueryParam(UserReqVo userVo);

    DubboRoleUserPageReq toDubboRoleUserPage(UserReqVo userVo);


    DubboRpcQueryParam toDubboRpcQueryParam(UserAliasReqVo userVo);




    /**
     * 用户分页数据装换
     */
    UserDeptPageRespVo userPageToResp(UserPage userPage);


    /**
     * entity to vo
     */
    @Mappings({
            @Mapping(source = "userId",target = "id" )
    })
    UserDeptRespVo userInfoToDeptResp (UserInfo userInfo);

    List<UserDeptRespVo> userInfoToDeptRespList (List<UserInfo> userInfo);

    /**
    *  用户组层级信息
    * */
    UserGroupLevelRespVo userDeatilTogroupLevel(UserDetail userDetail);

    List<UserGroupLevelRespVo> userDeatilTogroupLevelList(List<UserDetail> userDetails);

    UserGroupLevelPageRespVo userDetailPageToResp(UserDetailPage userDetailPage);
    /**
     * 用户所有角色信息
     */
    UserRoleRespVo userRoleToResp(UserRoleInfo userRoleInfo);

    List<UserRoleRespVo> userRoleToRespList(List<UserRoleInfo> userRoleInfos);




}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值