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; } }
一点点学习,一丝丝进步。不懈怠,才不会被时代淘汰