添加pom文件
<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.3.1.Final</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.3.1.Final</version> </dependency>
需要新建一个mapper
UserMapper
package com.example.test05.demo.mapper; import com.example.test05.demo.model.TbUserDO; import com.example.test05.demo.model.UserDo; import com.example.test05.demo.model.UserVO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; import org.springframework.core.convert.converter.Converter; import java.util.List; /** * @author DBC * @date 2022/5/7 16:49 */ @Mapper(componentModel = "spring") public interface UserMapper extends Converter<TbUserDO, UserVO> { @Mapping(target = "testId", source = "id") UserVO convert(TbUserDO userDO); /** * 数组转换 * @param tbUserDOList * @return */ List<UserVO> toVos(List<TbUserDO> tbUserDOList); /** * 多合一转换 * @param tbUserDO * @param userDo * @return */ @Mappings({ @Mapping(target = "name", source = "userDo.name"), @Mapping(target = "testId", source = "tbUserDO.id") }) UserVO convert(TbUserDO tbUserDO, UserDo userDo); }
开始测试
1.简单转换
@Test public void Test1() { TbUserDO userDO = new TbUserDO(); userDO.setId(1); userDO.setAge("20"); userDO.setName("dbc"); UserVO userVO = userMapper.convert(userDO); System.out.println(userVO); }
控制台输出
UserVO(testId=1, name=dbc, age=20)
2.数组转换
@Test public void Test2() { TbUserDO userDO = new TbUserDO(); userDO.setId(1); userDO.setAge("20"); userDO.setName("dbc"); ArrayList list = new ArrayList(); ArrayList listVO = new ArrayList(); for (int i=0;i<10;i++){ list.add(userDO); } listVO = (ArrayList) userMapper.toVos(list); System.out.println(listVO); }
.
控制台输出
[UserVO(testId=1, name=dbc, age=20), UserVO(testId=1, name=dbc, age=20), UserVO(testId=1, name=dbc, age=20), UserVO(testId=1, name=dbc, age=20), UserVO(testId=1, name=dbc, age=20), UserVO(testId=1, name=dbc, age=20), UserVO(testId=1, name=dbc, age=20), UserVO(testId=1, name=dbc, age=20), UserVO(testId=1, name=dbc, age=20), UserVO(testId=1, name=dbc, age=20)]
3.多合一转换
@Test public void Test3() { TbUserDO tbUserDO = new TbUserDO(); tbUserDO.setId(1); tbUserDO.setAge("20"); tbUserDO.setName("dbc"); UserDo userDo = new UserDo(); userDo.setName("大白菜"); UserVO userVO = userMapper.convert(tbUserDO,userDo); System.out.println(userVO); }
控制台输出
UserVO(testId=1, name=大白菜, age=20)
完整代码
点击查看完整内容
package com.example.test05.demo; import com.example.test05.demo.mapper.UserMapper; import com.example.test05.demo.model.TbUserDO; import com.example.test05.demo.model.UserDo; import com.example.test05.demo.model.UserVO; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.core.convert.ConversionService; import java.util.ArrayList; @SpringBootTest class DemoApplicationTests { @Autowired private ConversionService conversionService; @Autowired private UserMapper userMapper; @Test public void Test1() { TbUserDO userDO = new TbUserDO(); userDO.setId(1); userDO.setAge("20"); userDO.setName("dbc"); UserVO userVO = userMapper.convert(userDO); System.out.println(userVO); } @Test public void Test2() { TbUserDO userDO = new TbUserDO(); userDO.setId(1); userDO.setAge("20"); userDO.setName("dbc"); ArrayList list = new ArrayList(); ArrayList listVO = new ArrayList(); for (int i=0;i<10;i++){ list.add(userDO); } listVO = (ArrayList) userMapper.toVos(list); System.out.println(listVO); } @Test public void Test3() { TbUserDO tbUserDO = new TbUserDO(); tbUserDO.setId(1); tbUserDO.setAge("20"); tbUserDO.setName("dbc"); UserDo userDo = new UserDo(); userDo.setName("大白菜"); UserVO userVO = userMapper.convert(tbUserDO,userDo); System.out.println(userVO); } }
4.忽略对应字段
@Mappings({ @Mapping(target = "createUser",ignore=true), @Mapping(target = "createTime",ignore=true), @Mapping(target = "lastUser",ignore=true), @Mapping(target = "lastTime",ignore=true), }) ADO BDOToADO(BDO do);
5.避免返回对象创建
加入@MappingTarget
即可
QuestionnaireVO relocationMonitorToVO(QuestionnaireRelocationMonitorDO questionnaireRelocationMonitorDO, @MappingTarget QuestionnaireVO questionnaireVO);
6.null值不要赋值,忽略null值
@Mapper(componentModel = "spring", nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
本文作者为DBC,转载请注明。