教程 > mapstruct 教程 > 阅读:872

mapstruct 基本映射——迹忆客-ag捕鱼王app官网

使用 mapstruct 非常简单。 要创建映射器,需要在接口上使用 org.mapstruct.msapper 注解。

@mapper
public interface studentmapper {...}

现在在接口中创建一个转换方法。

@mapper
public interface studentmapper {
   student getmodelfromentity(studententity student);
}

如果源对象属性和目标对象属性具有相同的名称,则这些属性将自动映射。 如果属性名称不同,请使用 @mapping 注解,如下所示

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

这里 classname 是目标对象 student 中的属性名称,classval 是源对象 studententity 中的属性名称。

示例

使用以下代码创建 student.java

student.java

package com.jiyik.dto;
public class student {
    private int id;
    private string name;
    private string classname;
    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;
    }
}

使用以下代码创建 studententity.java

studententity.java

package com.jiyik.dto;
public class studententity {
    private int id;
    private string name;
    private string classval;
    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;
    }
}

使用以下代码创建 studentmapper.java

studentmapper.java

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

使用以下代码创建 studentmappertest.java

studentmappertest.java

import com.jiyik.dto.student;
import com.jiyik.dto.studententity;
import com.jiyik.mapper.studentmapper;
import org.junit.jupiter.api.test;
import org.mapstruct.factory.mappers;
import static org.junit.jupiter.api.assertions.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);
        student model = studentmapper.getmodelfromentity(entity);
        assertequals(entity.getclassval(), model.getclassname());
        assertequals(entity.getname(), model.getname());
        assertequals(entity.getid(), model.getid());
    }
    @test
    public void testmodeltoentity() {
        student model = new student();
        model.setid(1);
        model.setname("john");
        model.setclassname("x");
        studententity entity = studentmapper.getentityfrommodel(model);
        assertequals(entity.getclassval(), model.getclassname());
        assertequals(entity.getname(), model.getname());
        assertequals(entity.getid(), model.getid());
    }
}

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

$ mvn clean test

执行结果如下

mapstruct 基础映射

查看笔记

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