教程 > mapstruct 教程 > 阅读:1403

mapstruct 映射枚举 enum——迹忆客-ag捕鱼王app官网

mapstruct 自动映射枚举。 具有相同名称的枚举会自动映射。 如果名称不同,我们可以使用 @valuemapping 注解进行映射。

语法

@mapper
public interface utilitymapper {
@valuemapping(source = "extra", target = "special")
placedordertype getenum(ordertype order);
}

示例

打开 映射流 章节中更新的项目映射。

使用以下代码创建 ordertype.java

ordertype.java

package com.jiyik.enums;
public enum ordertype {
    extra,
    normal,
    standard
}

使用以下代码创建 placedordertype.java

placedordertype.java

package com.jiyik.enums;
public enum placedordertype {
    special,
    normal,
    standard
}

使用以下代码更新 utilitymapper.java

utilitymapper.java

package com.jiyik.mapper;
import com.jiyik.enums.ordertype;
import com.jiyik.enums.placedordertype;
import org.mapstruct.mapmapping;
import org.mapstruct.mapper;
import org.mapstruct.valuemapping;
import java.util.gregoriancalendar;
import java.util.map;
import java.util.stream.stream;
@mapper
public interface utilitymapper {
    @mapmapping(valuedateformat = "dd.mm.yyyy")
    map getmap(map source);
    stream getstream(stream source);
    @valuemapping(source = "extra", target = "special")
    placedordertype getenum(ordertype order);
}

使用以下代码更新 utilitymappertest.java

utilitymappertest.java

import com.jiyik.enums.ordertype;
import com.jiyik.enums.placedordertype;
import com.jiyik.mapper.utilitymapper;
import org.junit.test;
import org.mapstruct.factory.mappers;
import java.util.arrays;
import java.util.gregoriancalendar;
import java.util.hashmap;
import java.util.map;
import java.util.stream.stream;
import static org.junit.assert.assertequals;
public class utilitymappertest {
    private utilitymapper utilitymapper=mappers.getmapper(utilitymapper.class);
    @test
    public void testmapmapping() {
        map source = new hashmap<>();
        source.put(1l, new gregoriancalendar(2015, 3, 5));
        map target = utilitymapper.getmap(source);
        assertequals("05.04.2015", target.get("1"));
    }
    @test
    public void testgetstream() {
        stream numbers = arrays.aslist(1, 2, 3, 4).stream();
        stream strings = utilitymapper.getstream(numbers);
        assertequals(4, strings.count());
    }
    @test
    public void testgetenum() {
        placedordertype placedordertype = utilitymapper.getenum(ordertype.extra);
        placedordertype placedordertype1 = utilitymapper.getenum(ordertype.normal);
        placedordertype placedordertype2 = utilitymapper.getenum(ordertype.standard);
        assertequals(placedordertype.special.name(), placedordertype.name());
        assertequals(placedordertype.normal.name(), placedordertype1.name());
        assertequals(placedordertype.standard.name(), placedordertype2.name());
    }
}

运行以下命令来测试映射。

$ mvn clean test

执行结果如下

mapstruct 枚举映射

查看笔记

扫码一下
查看教程更方便
网站地图