pom文件
<!-- mapStruct开始 -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.2.Final</version>
</dependency>
<!-- mapStruct结束 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.16</version>
</dependency>
entity 类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author lc
* @description
* @date 2022/9/16 17:09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student implements Serializable {
/**
* id
*/
private Integer id;
/**
* 学生姓名
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 表识
*/
private Integer age2;
/**
* 性别
*/
private String sex;
}
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author lc
* @description
* @date 2022/9/16 17:38
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class StudentAndTeacher implements Serializable {
/**
* id
*/
private Integer id;
/**
* 学生姓名
*/
private String studentName;
/**
* 老师姓名
*/
private String teacherName;
}
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author lc
* @description
* @date 2022/9/16 17:37
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TeacherRequestVo {
/**
* id
*/
private Integer teacherId;
/**
* 学生姓名
*/
private String teacherName;
/**
* 年龄
*/
private Integer teacherAge;
}
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author lc
* @description
* @date 2022/9/16 17:10
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class StudentRequestVo {
/**
* id
*/
private Integer id;
/**
* 学生姓名
*/
private String studentName;
/**
* 年龄
*/
private Integer studentAge;
}
mapstruct 方法类
import com.example.demo.entity.Student;
import com.example.demo.entity.StudentAndTeacher;
import com.example.demo.entity.TeacherRequestVo;
import com.example.demo.vo.StudentRequestVo;
import org.mapstruct.InjectionStrategy;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* @author lsc
* @description
* @date 2022/9/16 17:12
*/
@Mapper(componentModel = "spring", injectionStrategy = InjectionStrategy.CONSTRUCTOR)
public interface StudentMapStrut {
@Mappings({
@Mapping(target = "name",source = "studentName"),
@Mapping(target = "age",source = "studentAge"),
@Mapping(target = "age2",expression = "java(com.example.demo.test.MapStructUtil.ageConvert(studentRequestVo.getStudentAge()))"),
})
Student studentConvert(StudentRequestVo studentRequestVo);
List<Student> studentListConvert(List<StudentRequestVo> studentRequestVos);
@Mappings({
@Mapping(target = "studentName",source = "studentRequestVo.studentName"),
@Mapping(target = "teacherName",source = "teacherRequestVo.teacherName")
})
StudentAndTeacher studentAndTeacherConvert(StudentRequestVo studentRequestVo, TeacherRequestVo teacherRequestVo);
}
mapstruct 工具类
public class MapStructUtil {
public static Integer ageConvert(Integer studentAge){
if (studentAge<=20){
return 0;
}else {
return 1;
}
}
}
Test Demo 类
import cn.hutool.json.JSONUtil;
import com.example.demo.entity.Student;
import com.example.demo.entity.StudentAndTeacher;
import com.example.demo.entity.TeacherRequestVo;
import com.example.demo.vo.StudentRequestVo;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* @author lc
* @description
* @date 2022/9/16 17:07
*/
@RestController
@Log4j2
public class Dome {
@Autowired
private StudentMapStrut studentMapStrut;
@GetMapping("/test")
public String test() {
StudentRequestVo vo = new StudentRequestVo(1, "学生", 15);
StudentRequestVo vo2 = new StudentRequestVo(2, "学生", 21);
Student student = studentMapStrut.studentConvert(vo);
String s1 = JSONUtil.toJsonPrettyStr(vo);
String s = JSONUtil.toJsonPrettyStr(student);
String sss ="\n"+ "转换前:" + s1 + "\n" + "转换后:" + s;
log.info("sss={}",sss);
List<StudentRequestVo> list = new ArrayList<>();
list.add(vo);
list.add(vo2);
List<Student> students = studentMapStrut.studentListConvert(list);
TeacherRequestVo teacherRequestVo = new TeacherRequestVo(2,"老师",21);
StudentAndTeacher studentAndTeacher = studentMapStrut.studentAndTeacherConvert(vo, teacherRequestVo);
return sss;
}
}