mapstruct 集合转换指定方法

接口

    /**
     * @IterableMapping(qualifiedByName = "test") : 指定调用@Named("test")标记的方法作为集合内元素转换方法
     */
    @Named("test2")
    @IterableMapping(qualifiedByName = "test")
    List<ClusterInfoDTO> test2(List<ClusterInfo> clusterInfoSet);

    /**
     * 该方法只想复制id属性
     * @BeanMapping(ignoreByDefault = true) : 不自动映射字段,所有需要映射的字段均需要通过@Mapping来指定
     */
    @Named("test")
    @BeanMapping(ignoreByDefault = true)
    @Mapping(target = "id", source = "id")
    ClusterInfoDTO test1(ClusterInfo clusterInfoSet);

自动生成的实现

    @Override
    public List<ClusterInfoDTO> test2(List<ClusterInfo> clusterInfoSet) {
        if ( clusterInfoSet == null ) {
            return null;
        }

        List<ClusterInfoDTO> list = new ArrayList<ClusterInfoDTO>( clusterInfoSet.size() );
        for ( ClusterInfo clusterInfo : clusterInfoSet ) {
            list.add( test1( clusterInfo ) );
        }

        return list;
    }

    @Override
    public ClusterInfoDTO test1(ClusterInfo clusterInfoSet) {
        if ( clusterInfoSet == null ) {
            return null;
        }

        ClusterInfoDTO clusterInfoDTO = new ClusterInfoDTO();

        clusterInfoDTO.setId( clusterInfoSet.getId() );

        return clusterInfoDTO;
    }
原文地址:https://www.cnblogs.com/xiaojiluben/p/15514941.html