教程 > mapstruct 教程 > 阅读:898

mapstruct 映射多个对象——迹忆客-ag捕鱼王app官网

我们也可以添加映射多个对象。 例如,我们想要使用 student 和 address 对象获取 deliveryaddress 对象。

现在创建一个映射器接口,它可以将两个对象映射为一个。

@mapper
public interface deliveryaddressmapper {
   @mapping(source = "student.name", target = "name")
   @mapping(source = "address.houseno", target = "housenumber")
   deliveryaddress getdeliveryaddress(studententity student, addressentity address);   
}

示例

打开自定义映射章节中更新的项目映射。

使用以下代码创建 deliveryaddress.java

deliveryaddress.java

package com.jiyik.model;
public class deliveryaddress {
    private string name;
    private int housenumber;
    private string city;
    private string state;
    public string getname() {
        return name;
    }
    public void setname(string name) {
        this.name = name;
    }
    public int gethousenumber() {
        return housenumber;
    }
    public void sethousenumber(int housenumber) {
        this.housenumber = housenumber;
    }
    public string getcity() {
        return city;
    }
    public void setcity(string city) {
        this.city = city;
    }
    public string getstate() {
        return state;
    }
    public void setstate(string state) {
        this.state = state;
    }
}

使用以下代码创建 addressentity.java

addressentity.java

package com.jiyik.entity;
public class addressentity {
    private int houseno;
    private string city;
    private string state;
    public int gethouseno() {
        return houseno;
    }
    public void sethouseno(int houseno) {
        this.houseno = houseno;
    }
    public string getcity() {
        return city;
    }
    public void setcity(string city) {
        this.city = city;
    }
    public string getstate() {
        return state;
    }
    public void setstate(string state) {
        this.state = state;
    }
}

使用以下代码创建 deliveryaddressmapper.java

deliveryaddressmapper.java

package com.jiyik.mapper;
import com.jiyik.entity.addressentity;
import com.jiyik.entity.studententity;
import com.jiyik.model.deliveryaddress;
import org.mapstruct.mapper;
import org.mapstruct.mapping;
@mapper
public interface deliveryaddressmapper {
    @mapping(source = "student.name", target = "name")
    @mapping(source = "address.houseno", target = "housenumber")
    deliveryaddress getdeliveryaddress(studententity student, addressentity address);
}

使用以下代码创建 deliveryaddressmappertest.java

deliveryaddressmappertest.java

import com.jiyik.entity.addressentity;
import com.jiyik.entity.studententity;
import com.jiyik.mapper.deliveryaddressmapper;
import com.jiyik.model.deliveryaddress;
import org.junit.jupiter.api.test;
import org.mapstruct.factory.mappers;
import static org.junit.jupiter.api.assertions.assertequals;
public class deliveryaddressmappertest {
    private deliveryaddressmapper deliveryaddressmapper = mappers.getmapper(deliveryaddressmapper.class);
    @test
    public void testentitytomodel() {
        studententity student = new studententity();
        student.setclassval("x");
        student.setname("john");
        student.setid(1);
        addressentity address = new addressentity();
        address.setcity("y");
        address.setstate("z");
        address.sethouseno(1);
        deliveryaddress deliveryaddress = deliveryaddressmapper.getdeliveryaddress(student, address);
        assertequals(deliveryaddress.getname(), student.getname());
        assertequals(deliveryaddress.getcity(), address.getcity());
        assertequals(deliveryaddress.getstate(), address.getstate());
        assertequals(deliveryaddress.gethousenumber(), address.gethouseno());
    }
}

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

$ mvn clean test

执行结果如下

mapstruct 映射多对象

查看笔记

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