扫码一下
查看教程更方便
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
执行结果如下