教程 > mapstruct 教程 > 阅读:661

mapstruct 映射直接字段——迹忆客-ag捕鱼王app官网

mapstruct 可以轻松处理直接字段映射。 例如,将部分作为私有属性的 student 和将部分作为公共属性的 studententity。 要同时拥有 getter/setter 映射,属性应该是公共的。 在 public final 的情况下,只有 getter 方法将用于映射。

现在创建一个映射器接口。 我们现在将使用 @inheritinverseconfiguration 注解来复制反向配置。

@mapper
public interface studentmapper {
   @mapping(target="classname", source="classval")
   @mapping(target="subject", source="subject.name")
   student getmodelfromentity(studententity studententity);
    
   @inheritinverseconfiguration
   studententity getentityfrommodel(student student);
}

示例

打开映射嵌套对象章节中更新的项目映射。

使用以下代码更新 studententity.java

studententity.java

package com.jiyik.entity;
public class studententity {
    private int id;
    private string name;
    private string classval;
    private subjectentity subject;
    public string section;
    public int getid() {
        return id;
    }
    public void setid(int id) {
        this.id = id;
    }
    public string getname() {
        return name;
    }
    public void setname(string name) {
        this.name = name;
    }
    public string getclassval() {
        return classval;
    }
    public void setclassval(string classval) {
        this.classval = classval;
    }
    public subjectentity getsubject() {
        return subject;
    }
    public void setsubject(subjectentity subject) {
        this.subject = subject;
    }
}

使用以下代码更新 student.java

student.java

package com.jiyik.model;
public class student {
    private int id;
    private string name;
    private string classname;
    private string subject;
    private string section;
    public int getid() {
        return id;
    }
    public void setid(int id) {
        this.id = id;
    }
    public string getname() {
        return name;
    }
    public void setname(string name) {
        this.name = name;
    }
    public string getclassname() {
        return classname;
    }
    public void setclassname(string classname) {
        this.classname = classname;
    }
    public string getsubject() {
        return subject;
    }
    public void setsubject(string subject) {
        this.subject = subject;
    }
    public string getsection() {
        return section;
    }
    public void setsection(string section) {
        this.section = section;
    }
}

使用以下代码更新 studentmapper.java

studentmapper.java

package com.jiyik.mapper;
import com.jiyik.entity.studententity;
import com.jiyik.model.student;
import org.mapstruct.inheritinverseconfiguration;
import org.mapstruct.mapper;
import org.mapstruct.mapping;
@mapper
public interface studentmapper {
    @mapping(target="classname", source="classval")
    @mapping(target="subject", source="subject.name")
    student getmodelfromentity(studententity studententity);
    @inheritinverseconfiguration
    studententity getentityfrommodel(student student);
}

使用以下代码更新 studentmappertest.java

studentmappertest.java

import com.jiyik.entity.studententity;
import com.jiyik.entity.subjectentity;
import com.jiyik.mapper.studentmapper;
import com.jiyik.model.student;
import org.junit.test;
import org.mapstruct.factory.mappers;
import static org.junit.assert.assertequals;
public class studentmappertest {
    private studentmapper studentmapper = mappers.getmapper(studentmapper.class);
    @test
    public void testentitytomodel() {
        studententity entity = new studententity();
        entity.setclassval("x");
        entity.setname("john");
        entity.setid(1);
        entity.section = "a";
        subjectentity subject = new subjectentity();
        subject.setname("computer");
        entity.setsubject(subject);
        student model = studentmapper.getmodelfromentity(entity);
        assertequals(entity.getclassval(), model.getclassname());
        assertequals(entity.getname(), model.getname());
        assertequals(entity.getid(), model.getid());
        assertequals(entity.getsubject().getname(), model.getsubject());
        assertequals(entity.section, model.getsection());
    }
    @test
    public void testmodeltoentity() {
        student model = new student();
        model.setid(1);
        model.setname("john");
        model.setclassname("x");
        model.setsubject("science");
        model.setsection("a");
        studententity entity = studentmapper.getentityfrommodel(model);
        assertequals(entity.getclassval(), model.getclassname());
        assertequals(entity.getname(), model.getname());
        assertequals(entity.getid(), model.getid());
        assertequals(entity.getsubject().getname(), model.getsubject());
        assertequals(entity.section, model.getsection());
    }
}

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

$ mvn clean test

执行结果如下

mapstruct 映射直接字段

查看笔记

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