本次只讲映射与逆映射,如果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 原始对象
* @param 目标对象
*/
public interface BasicObjectMapper {
@Mappings({})
/**
* 继承单个对象映射配置
*/
@InheritConfiguration
TARGET to(SOURCE var1);
/**
* 继承集合配置
* @param var1
* @return
*/
@InheritConfiguration
List to(List var1);
/**
* 使用原配置单个对象进行逆映射
* @param var1
* @return
*/
@InheritInverseConfiguration
SOURCE from(TARGET var1);
/**
* 使用原配置集合对象进行逆映射
* @param var1
* @return
*/
@InheritInverseConfiguration
List from(List 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{
@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 list=new ArrayList<>();
list.add(to);
List from1 = categoryMapper.from(list);
System.out.println(" List from1 :"+JSON.toJSONString(from1));
List listCategoryVo=new ArrayList<>();
listCategoryVo.add(source);
List to1 = categoryMapper.to(listCategoryVo);
System.out.println("List 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 to(List var1) {
if ( var1 == null ) {
return null;
}
List list = new ArrayList( 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 from(List var1) {
if ( var1 == null ) {
return null;
}
List list = new ArrayList( 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;
}
}