教程 > mapstruct 教程 > 阅读:728

mapstruct 隐式类型转换——迹忆客-ag捕鱼王app官网

mapstruct 在大多数情况下会自动处理类型转换。 例如,int 到 long 或 string 的转换。 转换也处理空值。 以下是一些重要的自动转换。

  • 在原始类型和相应的包装类之间。
  • 在原始类型和字符串之间。
  • 在枚举类型和字符串之间。
  • 在 bigint、bigdecimal 和 string 之间。
  • 在日历/日期和 xmlgregoriancalendar 之间。
  • xmlgregoriancalendar 和字符串之间。
  • 在 jodas 日期类型和字符串之间。

示例

打开使用 builder 映射章节中更新的项目映射。

使用以下代码更新 studententity.java

studententity.java

package com.jiyik.entity;
public class studententity {
    private string id;
    private string name;
    private string classval;
    private subjectentity subject;
    public string section;
    public string getid() {
        return id;
    }
    public void setid(string 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 final string name;
    private final int id;
    protected student(student.builder builder) {
        this.name = builder.name;
        this.id = builder.id;
    }
    public static student.builder builder() {
        return new student.builder();
    }
    public static class builder {
        private string name;
        private int id;
        public builder name(string name) {
            this.name = name;
            return this;
        }
        public builder id(int id) {
            this.id = id;
            return this;
        }
        public student create() {
            return new student( this );
        }
    }
    public string getname() {
        return name;
    }
    public int getid() {
        return id;
    }
}

使用以下代码更新 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.test;
import org.mapstruct.factory.mappers;
import static org.junit.assert.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());
    }
}

使用以下代码更新 studentmappertest.java

studentmappertest.java

import com.jiyik.entity.studententity;
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.setname("john");
        entity.setid("1");
        student model = studentmapper.getmodelfromentity(entity);
        assertequals(entity.getname(), model.getname());
        assertequals(integer.parseint(entity.getid()), model.getid());
    }
    @test
    public void testmodeltoentity() {
        student.builder builder = student.builder().id(1).name("john");
        student model = builder.create();
        studententity entity = studentmapper.getentityfrommodel(model);
        assertequals(entity.getname(), model.getname());
        assertequals(integer.parseint(entity.getid()), model.getid());
    }
}

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

$ mvn clean test

执行结果如下

mapstruct 映射多对象

查看笔记

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