orika简介

orika简介

在工作中,我们经常涉及到对象的[DTO](https://so.csdn.net/so/search?q=DTO&spm=1001.2101.3001.7020)、DO等对象的转换。对于这些对象的转换,我们除了自己写大量的get/set方法外,还可以借助orika这样的Bean映射工具来帮我们完成。

方式1

/**
 * MapperFacade 用于dto ->entity的转换
 *
 * @author FrozenWatermelon
 * @date 2020/7/11
 */
@Configuration
public class OrikaConfig {

    @Bean
    public MapperFactory mapperFactory() {
        return new DefaultMapperFactory.Builder().build();
    }

    @Bean
    public MapperFacade mapperFacade() {
        return mapperFactory().getMapperFacade();
    }

}

使用

@Autowired
private MapperFacade mapperFacade;
EsLogisticsRecordBO esLogisticsRecordBO = mapperFacade.map(logisticsRecord, EsLogisticsRecordBO.class);

```

方式2

/**
 * 对orika进行简单的封装
 */
public class BeanMapper {
    private static MapperFactory mapperFactory;
    private static MapperFacade mapperFacade;


    static {
        mapperFactory = new DefaultMapperFactory.Builder().build();
        mapperFacade = mapperFactory.getMapperFacade();

        // 利用SPI,注册Bean的转换规则
        ServiceLoader<BeanMapperRegistry> serviceLoader = ServiceLoader.load(BeanMapperRegistry.class);
        for (BeanMapperRegistry beanMapperRegistry : serviceLoader) {
            beanMapperRegistry.registry(mapperFactory);
        }
    }

    public static <S, T> T map(S sourceObj, Class<T> targetClass) {
        return mapperFacade.map(sourceObj, targetClass);
    }

    public static <S, T> List<T> mapAsList(Iterable<S> sourceObj, Class<T> targetClass) {
        return mapperFacade.mapAsList(sourceObj, targetClass);
    }

使用

OrderDTO orderDTO = new OrderDTO("1", "kfc", "南京路", "666");
UserDTO userDTO = new UserDTO("1", "小王");
System.out.println(BeanMapper.map(orderDTO, OrderDO.class));
System.out.println(BeanMapper.map(userDTO, UserDO.class)); 
 

## 感谢
https://blog.csdn.net/weixin_44335140/article/details/122845733

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值