使用数据传输对象避免写多表关联查询

Posted zxfei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用数据传输对象避免写多表关联查询相关的知识,希望对你有一定的参考价值。

@Service
public class QuestionServiceImpl implements QuestionService {
    @Autowired
    private QuestionMapper questionMapper;
    @Autowired
    private UserMapper userMapper;

    @Override
    public List<QuestionDTO> findAll() {
        List<QuestionDTO> questionDTOs = new ArrayList<>();
        List<Question> questions = questionMapper.findAll();
    
        User user = null;
        QuestionDTO questionDTO = null;
        for (Question question : questions) {
            user = userMapper.findById(question.getPublisher());
    
            questionDTO = new QuestionDTO();
            BeanUtils.copyProperties(question, questionDTO);
    
            // 为数据传输对象设置user
            questionDTO.setUser(user);
            questionDTOs.add(questionDTO);
        }
    
        return questionDTOs;
    }
}

Question.java

@Data
public class Question {
    private Integer id;//
    private String title;// varchar(50)
    private String description;// text,
    private Long gmtCreated;// bigint(20) DEFAULT NULL,
    private Long gmtModified;//
    private Integer publisher;// 问题发布者id
    private Integer commentNum;// 评论数
    private Integer viewNum;// 浏览数
    private Integer likeNum;// 点赞数
    private String tag;// 问题标签
}

传输对象

package com.fei.dto;

import com.fei.domain.User;

import lombok.Data;

@Data
public class QuestionDTO {
    private Integer id;//
    private String title;// varchar(50)
    private String description;// text,
    private Long gmtCreated;// bigint(20) DEFAULT NULL,
    private Long gmtModified;//
    private Integer publisher;// 问题发布者id
    private Integer commentNum;// 评论数
    private Integer viewNum;// 浏览数
    private Integer likeNum;// 点赞数
    private String tag;// 问题标签
    
    // 数据传输对象,增加发布者User的id
    private User user;
}

以上是关于使用数据传输对象避免写多表关联查询的主要内容,如果未能解决你的问题,请参考以下文章

Django表关联对象及多表查询

Java mysql 多表联查 与循环查询组装数据

Mybatis的延迟加载

Django框架(模型层:多表查询)

SpringData JPA多表查询

mybatis多表关联查询