美文网首页
工具类15:BeanMapper

工具类15:BeanMapper

作者: 七枷琴子 | 来源:发表于2018-12-21 20:48 被阅读0次

pom

<dependency>
            <groupId>ma.glasnost.orika</groupId>
            <artifactId>orika-core</artifactId>
            <version>1.5.2</version>
        </dependency>
     
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>28.1-jre</version>
        </dependency>
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.meallink.core.comm;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import ma.glasnost.orika.MapperFacade;
import ma.glasnost.orika.MapperFactory;
import ma.glasnost.orika.impl.DefaultMapperFactory;

import java.util.List;
import java.util.Map;
import java.util.function.Function;
//import ma.glasnost.orika.impl.generator.EclipseJdtCompilerStrategy;

/**
 * 简单封装orika, 实现深度转换Bean<->Bean的Mapper.
 */
public class BeanMapper {

    private static MapperFacade mapper = null;

    static {
        MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
//      MapperFactory mapperFactory = 
//              new DefaultMapperFactory.Builder()
//                      .compilerStrategy(new EclipseJdtCompilerStrategy())
//                      .build();
        mapper = mapperFactory.getMapperFacade();

    }

    /**
     * 基于Dozer转换对象的类型.
     */
    public static <S, D> D map(S source, Class<D> destinationClass) {
        return mapper.map(source, destinationClass);
    }

    /**
     * 基于Dozer转换Collection中对象的类型.
     */
    public static <S, D> List<D> mapList(Iterable<S> sourceList, Class<D> destinationClass) {
        return mapper.mapAsList(sourceList, destinationClass);
    }

    /**
     * 集合转map
     *
     * @param sourceList 集合
     * @param IMapKey    getkey方法
     * @param <S>        集合对像类型
     * @param <D>        key类型
     * @return
     */
    public static <S, D> Map<S, D> toMap(Iterable<D> sourceList, Function<D, S> IMapKey) {
        Map<S, D> result = Maps.newHashMap();
        if (sourceList == null) {
            return result;
        }
        for (D d : sourceList) {
            result.put(IMapKey.apply(d), d);
        }
        return result;
    }

    /**
     * 集合转map
     *
     * @param sourceList 集合
     * @param IMapKey    getkey方法
     * @param <S>        集合对像类型
     * @param <D>        key类型
     * @return
     */
    public static <S, D> Map<S, List<D>> toMapList(Iterable<D> sourceList, Function<D, S> IMapKey) {
        Map<S, List<D>> result = Maps.newHashMap();
        if (sourceList == null) {
            return result;
        }
        for (D d : sourceList) {
            S key = IMapKey.apply(d);
            if (result.containsKey(key)) {
                List<D> list = result.get(key);
                list.add(d);
            } else {
                List<D> list = Lists.newArrayList();
                list.add(d);
                result.put(key, list);
            }
        }
        return result;
    }
}

记录一个数据处理的工具类,天天用离不开

相关文章

网友评论

      本文标题:工具类15:BeanMapper

      本文链接:https://www.haomeiwen.com/subject/sinvkqtx.html