自学内容网 自学内容网

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)!