教程 > mapstruct 教程 > 阅读:360

mapstruct 抛出异常——迹忆客-ag捕鱼王app官网

mapstruct 映射器允许抛出特定的异常。 考虑一个自定义映射方法的情况,我们希望在出现无效数据的情况下抛出自定义异常。

语法

@mapper(uses=datemapper.class)
public interface utilitymapper {
carentity getcarentity(car car) throws parseexception;
}

示例

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

使用以下代码更新 utilitymapper.java

utilitymapper.java

package com.jiyik.mapper;
import com.jiyik.entity.carentity;
import com.jiyik.enums.ordertype;
import com.jiyik.enums.placedordertype;
import com.jiyik.model.car;
import org.mapstruct.mapmapping;
import org.mapstruct.mapper;
import org.mapstruct.valuemapping;
import java.text.parseexception;
import java.text.simpledateformat;
import java.util.date;
import java.util.gregoriancalendar;
import java.util.map;
import java.util.stream.stream;
@mapper(uses=datemapper.class)
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);
    carentity getcarentity(car car) throws parseexception;
}
class datemapper {
    public string asstring(gregoriancalendar date) {
        return date != null ? new simpledateformat( "yyyy-mm-dd" )
                .format( date.gettime() ) : null;
    }
    public gregoriancalendar asdate(string date) throws parseexception {
        date date1 = date != null ? new simpledateformat( "yyyy-mm-dd" )
                .parse( date ) : null;
        if(date1 != null) {
            return new gregoriancalendar(date1.getyear(), date1.getmonth(),date1.getday());
        }
        return null;
    }
}

使用以下代码更新 utilitymappertest.java

utilitymappertest.java

import com.jiyik.entity.carentity;
import com.jiyik.enums.ordertype;
import com.jiyik.enums.placedordertype;
import com.jiyik.mapper.utilitymapper;
import com.jiyik.model.car;
import org.junit.test;
import org.mapstruct.factory.mappers;
import java.text.parseexception;
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;
import static org.junit.assert.asserttrue;
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("2015-04-05", 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());
    }
    @test
    public void testgetcar() {
        car car = new car();
        car.setid(1);
        car.setmanufacturingdate("11/10/2020");
        boolean exceptionoccured = false;
        try {
            carentity carentity = utilitymapper.getcarentity(car);
        } catch (parseexception e) {
            exceptionoccured = true;
        }
        asserttrue(exceptionoccured);
    }
}

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

$ mvn clean test

执行结果如下

mapstruct 抛出异常

查看笔记

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