MapStruct 映射Map

使用 Mapstruct 我们可以使用 @MapMapping 注解创建 Map 对象的映射。 其他映射规则与我们目前看到的相同。

语法

@Mapper
public interface UtilityMapper {
   @MapMapping(valueDateFormat = "dd.MM.yyyy")
   Map<String, String> getMap(Map<Long, GregorianCalendar> source);
}

示例

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

使用以下代码创建 UtilityMapper.java

UtilityMapper.java

package com.jiyik.mapper;

import org.mapstruct.MapMapping;
import org.mapstruct.Mapper;

import java.util.GregorianCalendar;
import java.util.Map;

@Mapper
public interface UtilityMapper {
    @MapMapping(valueDateFormat = "dd.MM.yyyy")
    Map<String, String> getMap(Map<Long, GregorianCalendar> source);
}

使用以下代码创建 UtilityMapperTest.java

UtilityMapperTest.java

import com.jiyik.mapper.UtilityMapper;
import org.junit.Test;
import org.mapstruct.factory.Mappers;

import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;

import static org.junit.Assert.assertEquals;

public class UtilityMapperTest {
    private UtilityMapper utilityMapper = Mappers.getMapper(UtilityMapper.class);

    @Test
    public void testMapMapping() {
        Map<Long, GregorianCalendar> source = new HashMap<>();
        source.put(1L, new GregorianCalendar(2015, 3, 5));

        Map<String, String> target = utilityMapper.getMap(source);
        assertEquals("05.04.2015", target.get("1"));
    }
}

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

$ mvn clean test

执行结果如下

mapstruct 映射Map

查看笔记

扫码一下
查看教程更方便