作为一个专业帅气的后端,挨个set就太low了,下面给大家推荐两种实用的方法~
在这里插入图片描述
方法一:当两个类字段完全一样的情况下可以使用org.springframework.beans包下的BeanUtils.copyProperties方法。

//初始化需要接受参数的类
 ConfigQueryDTO dto = new ConfigQueryDTO();
 //第一个参数为原始类,第二个是我们刚才声明的需要转换的类
 //这种方法只能转换两个类里面相同参数类别和名称的字段
 BeanUtils.copyProperties(queryDTO, dto);

通过源码我们可以看到这种方法是支持集合间相互转换的
在这里插入图片描述

方法二(墙裂推荐):当两个类字段不一样的情况下可以使用下面这种写法(@mapping注明两个类里面不一样的字段或者直接赋值):

@Mapper(componentModel = "spring")
public interface Convert {
    /**
     * INSTANCE实例
     */
    Convert INSTANCE= Mappers.getMapper(Convert.class);

    /**
     * 将OutA转成OutB
     * @param outA
     * @return OutB
     */
    @Mappings({
            @Mapping(source = "docId",target = "docSysId"),
            @Mapping(target = "roomId",defaultValue = "0"),
            @Mapping(target = "recordStatus",defaultValue = "0"),
            @Mapping(target = "firstFlag",defaultValue = ""),
            @Mapping(source = "hisCreateTime",target = "visitTime")
    })
    OutB covnertOutaToOutb(OutA outA);

   //集合间相互转换
    List<OutB> listConvert(List<OutA> outAList);
    }

调用: Convert .INSTANCE.方法名(参数)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐