mapstruct进阶用《四》

本次只讲映射与逆映射,如果mapping报错记得切换版本,有valuemapping可以使用

 

package com.mybatis.test.cache.po.customer.product;

import org.mapstruct.InheritConfiguration;
import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mappings;

import java.util.List;

/**
 * 顶级映射
 * @param <SOURCE> 原始对象
 * @param <TARGET> 目标对象
 */
public interface BasicObjectMapper<SOURCE, TARGET> {
    @Mappings({})
    /**
     * 继承单个对象映射配置
     */
    @InheritConfiguration
    TARGET to(SOURCE var1);

    /**
     * 继承集合配置
     * @param var1
     * @return
     */
    @InheritConfiguration
    List<TARGET> to(List<SOURCE> var1);

    /**
     * 使用原配置单个对象进行逆映射
     * @param var1
     * @return
     */
    @InheritInverseConfiguration
    SOURCE from(TARGET var1);

    /**
     * 使用原配置集合对象进行逆映射
     * @param var1
     * @return
     */
    @InheritInverseConfiguration
    List<SOURCE> from(List<TARGET> var1);


}

 

package com.mybatis.test.cache.po.customer.product;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
@Mapper(componentModel = "spring")
/**
 * 接口继承顶级接口,设置配置规则
 */
public interface CategoryMapper  extends  BasicObjectMapper<CategoryVo, ProductCategory>{
    @Mappings({
            @Mapping(source = "code", target = "categoryCode"),
            @Mapping(source = "name", target = "categoryName")
    })
    /**
     * 重写to方法
     */
    ProductCategory to(CategoryVo source);


}

 

测试demo


        CategoryVo source=new CategoryVo();
        source.setCode("101");
        source.setName("1name1");
        ProductCategory to = categoryMapper.to(source);
        List<ProductCategory> list=new ArrayList<>();
        list.add(to);
        List<CategoryVo> from1 = categoryMapper.from(list);
        System.out.println(" List<CategoryVo> from1 :"+JSON.toJSONString(from1));
        List<CategoryVo> listCategoryVo=new ArrayList<>();
        listCategoryVo.add(source);
        List<ProductCategory> to1 = categoryMapper.to(listCategoryVo);
        System.out.println("List<ProductCategory> to1:"+JSON.toJSONString(to1));

 

mapstruct映射类器实现类

 

package com.mybatis.test.cache.po.customer.product;

import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import org.springframework.stereotype.Component;

@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    date = "2022-01-27T10:19:18+0800",
    comments = "version: 1.4.2.Final, compiler: javac, environment: Java 1.8.0_91 (Oracle Corporation)"
)
@Component
public class CategoryMapperImpl implements CategoryMapper {

    @Override
    public List<ProductCategory> to(List<CategoryVo> var1) {
        if ( var1 == null ) {
            return null;
        }

        List<ProductCategory> list = new ArrayList<ProductCategory>( var1.size() );
        for ( CategoryVo categoryVo : var1 ) {
            list.add( to( categoryVo ) );
        }

        return list;
    }

    @Override
    public CategoryVo from(ProductCategory var1) {
        if ( var1 == null ) {
            return null;
        }

        CategoryVo categoryVo = new CategoryVo();

        categoryVo.setCode( var1.getCategoryCode() );
        categoryVo.setName( var1.getCategoryName() );

        return categoryVo;
    }

    @Override
    public List<CategoryVo> from(List<ProductCategory> var1) {
        if ( var1 == null ) {
            return null;
        }

        List<CategoryVo> list = new ArrayList<CategoryVo>( var1.size() );
        for ( ProductCategory productCategory : var1 ) {
            list.add( from( productCategory ) );
        }

        return list;
    }

    @Override
    public ProductCategory to(CategoryVo source) {
        if ( source == null ) {
            return null;
        }

        ProductCategory productCategory = new ProductCategory();

        productCategory.setCategoryCode( source.getCode() );
        productCategory.setCategoryName( source.getName() );

        return productCategory;
    }
}

 

posted @ 2022-01-27 11:11  余生请多指教ANT  阅读(57)  评论(0编辑  收藏  举报