/**
* mapstruct:对象转换器,入门参考网址:https://blog.csdn.net/zhige_me/article/details/80699784
* 使用mapstruct的步骤 1引入依赖 2 新疆一个抽象类或者接口并标注@Mapper 3写转换逻辑 方法名字是任意的没有要求 默认映射规则 对同类型且同名的属性会自动映射到实体类命名策略,使用下划线转驼峰命名
* 自动类型转换 mapstruct 八种基本类型 和他们对应的包装类型 之间会自动转换 这个不需要担心 String 之间会自动转换 日期和string之间会自动转换
* 指定具体的映射规则 @mappings(
* value = {@Mapping(source = "字段名",target="字段名" "映射规则" {numberFormat="#.00"}
* @Mapping(source = "字段名","字段名" "映射规则" {dateFormat="yyyy-MM-dd HH:mm:ss"}) NAVP-2GRN-YCVZ-THYQ
* 忽略某一个属性 target ="字段名" ignore=true)
* 实体类映射 下面定义一个实体类的映射规则 直接 source target 会直接去调用下面的方法
* 自定义映射
* @AfterMapping 在调用自动完成会会调用下面的方法
* public void dto2voAfter(CarDTO carDTO,@MappingTarget CarVO carVO){
* 表示传来的carvo 对象 是已经赋值过的 所以afetermapping 和mappingTarget 在映射的最后一步对属性自定义处理
* 比如说判断 然后赋值即可
* }
* 批量映射
* 不是单一类 是list
* 集合批量转换 传进来要list参数
*
* 更新 updateVehicleVO(CarDTO carDTO,@MappingTarget VehicleVO vehicleVO);
* 继承配置 @InheritConfiguration 需要将传入的参数 参数写全不然的话就会导致为空 还可以通过设置默认映射 不映射 然后设置映射的内容
* 方向继承不需要再写一遍 or @InheritInverseConfiguration(name ="继承的方法") 只会继承mapping注解 不会继承beanMapping注解
*
* 与spring无缝结合使用
* @Autowired or @Resource 没有这个对象 所以需要 将这个convert 交给我们的spring容器管理 所以就需要 在当前这个@Mapper注解中写上
* @mapper(componentModel= "spring")
* )}
* beanmapping 来配置默认规则是否生效一般用于控制 映射是否生效 比如 作用在一个方法上 比如 执行忽略@BeanMapping(ignoreByDefault =true)
* @author Dyb
* @since 2021-08-11 14:22
*/
@Mapper(componentModel = "spring")
public interface NewsConvert {
/**
* Convert paged pos to vos.
* pos to vos
* @param newsPage news
* @return paged Rt list
*/
Page<NewsListRt> po2Rt(Page<NewsPO> newsPage);
/**
* Pos to rt list.
*
* @param news news
* @return rt list
*/
List<NewsListRt> poListToRt(List<NewsPO> news);
/**
* Convert po to rt.
*
* @param news news from database
* @return news detail
*/
NewsDetailRt po2Detail(NewsPO news);
/**
* Build po with param.
*
* @param param param
* @return news
*/
NewsPO create2po(NewsCreateParam param);
TNewsPO create2Tpo(NewsCreateParam param);
NewsPO update2Po(NewsUpdateParam param);
}
|