Bean拷贝工具MapStruct
MapStruct是一种在编译时就生产bean拷贝代码的bean copy工具。
简单实用
maven配置
这里需要注意的是插件中lombok和mapstruct-processor的配置
1.3.1.Final
1.18.12
org.mapstruct
mapstruct
${org.mapstruct.version}
org.projectlombok
lombok
${org.projectlombok.version}
provided
org.apache.maven.plugins
maven-compiler-plugin
3.8.1
1.8
1.8
org.projectlombok
lombok
${org.projectlombok.version}
org.mapstruct
mapstruct-processor
${org.mapstruct.version}
配置转换器
package com.yihengyi.beans.converters;
import com.yihengyi.beans.dos.PersonDo;
import com.yihengyi.beans.dtos.PersonDto;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
@Mapper
public interface PersonConverter {
PersonConverter INSTANCE = Mappers.getMapper(PersonConverter.class);
@Mappings(@Mapping(source = "name", target = "userName"))
PersonDto do2dto(PersonDo person);
}
测试
package com.yihengyi.mapstruct;
import com.yihengyi.beans.converters.PersonConverter;
import com.yihengyi.beans.dos.PersonDo;
import com.yihengyi.beans.dtos.PersonDto;
import com.yihengyi.beans.enums.Gender;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import java.util.Date;
public class BeanCopyTest {
@Test
public void testBeanCopy() {
PersonDo personDo = new PersonDo();
personDo.setName("Hollis");
personDo.setAge(28);
personDo.setBirthday(new Date());
personDo.setId(1);
personDo.setGender(Gender.FEMALE);
PersonDto personDto = PersonConverter.INSTANCE.do2dto(personDo);
System.out.println(personDto);
assertEquals("Hollis", personDto.getUserName());
}
}
测试结果:
运行mvn test命令
Running com.yihengyi.mapstruct.BeanCopyTest
PersonDto(userName=Hollis, age=28, birthday=Sat Aug 15 23:15:53 CST 2020, gender=FEMALE)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.066 sec
代码地址
https://github.com/yihengyi/map-struct-test
参考:
https://mp.weixin.qq.com/s/a-UDuXallZkHqj5hJSukZg