添加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,转载请注明。