SpringBoot+MybatisPlus實現關聯表查詢

1.說明

最近寫代碼用到了mybatisPlus涉及到關聯表查詢。需求是這樣的:
我有一個專業表major其中有個字段是所屬院系dept_id,我需要通過這個dept_id關聯院系表department的ID去獲取院系的名稱。
例如:經濟管理學院

實現效果:
在這裏插入圖片描述

2.實現步驟

2.1 現有實體類

  • 院系實體

```java
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_department")
@ApiModel(value="Department對象", description="院系")
public class Department implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "院系ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty(value = "院系代碼")
    private String deptNo;

    @ApiModelProperty(value = "院系名稱")
    private String deptName;

    @ApiModelProperty(value = "院系位置")
    private String deptLocation;

    @ApiModelProperty(value = "備註")
    private String deptRemark;

    @ApiModelProperty(value = "創建時間")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @ApiModelProperty(value = "更新時間")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;


}
  • 專業實體
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_major")
@ApiModel(value="Major對象", description="專業")
public class Major implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "專業ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty(value = "專業代碼")
    private String majorNo;

    @ApiModelProperty(value = "專業名稱")
    private String majorName;

    @ApiModelProperty(value = "所屬學院")
    private Long deptId;

    @ApiModelProperty(value = "備註")
    private String majorRemark;

    @ApiModelProperty(value = "創建時間")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @ApiModelProperty(value = "更新時間")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;


}

2.2 創建vo對象

  • MajorVO 前端列表展示用
@Data
@ApiModel(value = "MajorVO", description = "展示用專業信息")
public class MajorVO implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "專業ID")
    private Long id;

    @ApiModelProperty(value = "專業代碼")
    private String majorNo;

    @ApiModelProperty(value = "專業名稱")
    private String majorName;

    @ApiModelProperty(value = "所屬院系ID")
    @TableField("dept_id")
    private Long deptId;

    @ApiModelProperty(value = "所屬院系")
    private String deptName;

    @ApiModelProperty(value = "備註")
    private String majorRemark;

    @ApiModelProperty(value = "創建時間")
    private Date createTime;
}

2.3 修改MajorMapper

public interface MajorMapper extends BaseMapper<Major> {
    /**
     *
     * @param page 前端傳入
     * @return
     */
    @Select("SELECT m.*,d.`dept_name` FROM tb_major m,tb_department d WHERE m.dept_id=d.id")
    List<MajorVO> selectMajorList(Page page);

}

2.4 修改MajorService

public interface MajorService extends IService<Major> {
    void pageQuery(Page<MajorVO> pageParam);

}
@Service
public class MajorServiceImpl extends ServiceImpl<MajorMapper, Major> implements MajorService {

    @Override
    public void pageQuery(Page<MajorVO> page) {
         List<MajorVO> records = baseMapper.selectMajorList(page);
         page.setRecords(records);
         page.setTotal(records.size());

    }
}

2.5 修改controller

@ApiOperation(value = "專業分頁列表")
    @GetMapping("{page}/{limit}")
    public Result pageQuery(
            @ApiParam(name = "page", value = "當前頁碼", required = true)
            @PathVariable Long page,
            @ApiParam(name = "limit", value = "每頁記錄數", required = true)
            @PathVariable Long limit){

        Page<MajorVO> pageParam = new Page<>(page, limit);
        majorService.pageQuery(pageParam);

        return  Result.ok().data("total", pageParam.getTotal()).data("rows", pageParam.getRecords());
    }

3.swagger測試

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章