Mapstruct用法(代码示例)
DTO类
package com.nsy.model.dto;
import com.nsy.model.pojo.TaskPoint;
import lombok.Data;
import java.util.List;
/**
* @className: ChapterDetailDTO
* @author: 宁舒意
* @description: TODO
* @date: 2024/5/22 15:07
*/
@Data
public class ChapterDetailDTO {
/**
* 主键id,用来得到插入后返回主键值
* 而且在修改章节这一功能里面,前端需要传这个id
*/
private Integer id;
/**
* 章节标题
*/
private String chapterTitle;
/**
* 章节序号
*/
private Integer chapterNumber;
/**
* 章节层级
*/
private Integer level;
/**
* 父级章节id
*/
private Integer fatherId;
/**
* 课程id
*/
private Integer courseId;
/**
* 章节任务点集合
*/
List<TaskPoint> taskPointList;
}
实体类
package com.nsy.model.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
/**
*
* @TableName chapter
*/
@TableName(value ="chapter")
@Data
public class Chapter implements Serializable {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 章节标题
*/
@TableField(value = "chapter_title")
private String chapterTitle;
/**
* 章节序号
*/
@TableField(value = "chapter_number")
private Integer chapterNumber;
/**
* 章节层级
*/
@TableField(value = "level")
private Integer level;
/**
* 父级章节id
*/
@TableField(value = "father_id")
private Integer fatherId;
/**
* 课程id
*/
@TableField(value = "course_id")
private Integer courseId;
/**
* 任务点标题
*/
@TableField(value = "task_point_title")
private String taskPointTitle;
/**
* 任务点内容
*/
@TableField(value = "content")
private String content;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
导入依赖
<!--实体类转换工具MapStruct-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.5.0.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.5.0.Final</version>
</dependency>
编写mapper
package com.nsy;
import com.nsy.model.dto.ChapterDetailDTO;
import com.nsy.model.pojo.Chapter;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;
@Mapper
public interface ChapterVOMapper {
ChapterVOMapper INSTANCE = Mappers.getMapper(ChapterVOMapper.class);
// Chapter toChapter(ChapterDetailDTO chapterAddDTO);
void updateChapterFromDto(ChapterDetailDTO chapterDetailDTO, @MappingTarget Chapter chapter);
void updateChapterDetailDTOFromPOJO(Chapter chapter,@MappingTarget ChapterDetailDTO chapterDetailDTO);
}
使用
@PutMapping("/chapters-add")
public BaseResult addChapters(@RequestBody List<ChapterDetailDTO> chapterDetailDTOList){
for (ChapterDetailDTO chapterDetailDTO : chapterDetailDTOList) {
Chapter chapter = new Chapter();
ChapterVOMapper.INSTANCE.updateChapterFromDto(chapterDetailDTO,chapter);
chapterService.save(chapter);
//将chapter插入后的id赋值给taskpoint
for (TaskPoint taskPoint : chapterDetailDTO.getTaskPointList()) {
taskPoint.setChapterId(chapter.getId());
taskPointService.save(taskPoint);
}
}
return new BaseResult<>(200,"添加章节成功");
}
原文地址:https://blog.csdn.net/Dennis_nafla/article/details/142990277
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!