1.说明

最近写代码用到了mybatisPlus涉及到关联表查询。需求是这样的:
我有一个专业表major其中有个字段是所属院系dept_id,我需要通过这个dept_id关联院系表department的ID去获取院系的名称。
例如:经济管理学院

实现效果:

2.实现步骤

2.1 现有实体类

  • 院系实体
@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测试

4.项目源码

https://gitee.com/indexman/student-server

SpringBoot+MybatisPlus实现关联表查询的更多相关文章

  1. SpringBoot Data JPA 关联表查询的方法

    SpringBoot Data JPA实现 一对多.多对一关联表查询 开发环境 IDEA 2017.1 Java1.8 SpringBoot 2.0 MySQL 5.X 功能需求 通过关联关系查询商店 ...

  2. Mybatis源码分析--关联表查询及延迟加载原理(二)

    在上一篇博客Mybatis源码分析--关联表查询及延迟加载(一)中我们简单介绍了Mybatis的延迟加载的编程,接下来我们通过分析源码来分析一下Mybatis延迟加载的实现原理. 其实简单来说Myba ...

  3. .NetCore中EFCore的使用整理(二)-关联表查询

    EF常用处理关联加载的方式有3中:延迟加载(Lazy Loading).贪婪加载 (Eager Loading)以及显示加载. 一.EF Core  1.1 1.当前的版本,还不支持延迟加载(Lazy ...

  4. 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案

    1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...

  5. springboot中使用JOIN实现关联表查询

    * 首先要确保你的表和想要关联的表有外键连接 repository中添加接口JpaSpecificationExecutor<?>,就可以使用springboot jpa 提供的API了. ...

  6. AppBox升级进行时 - 关联表查询与更新(Entity Framework)

    AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. 关联表的查询操作 使用 Include 方法,我们可以在一次数据库查询中将关联 ...

  7. MyBatis实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  8. MyBatis学习总结(五)——实现关联表查询(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013516.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数 ...

  9. MyBatis入门学习教程-实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  10. MyBatis学习总结(五)——实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

随机推荐

  1. VMware虚拟机部署Linux Ubuntu系统的方法

      本文介绍基于VMware Workstation Pro虚拟机软件,配置Linux Ubuntu操作系统环境的方法.   首先,我们需要进行VMware Workstation Pro虚拟机软件的 ...

  2. [转帖]HAProxy 在 TiDB 中的最佳实践

    https://docs.pingcap.com/zh/tidb/stable/haproxy-best-practices 本文介绍 HAProxy 在 TiDB 中的最佳配置和使用方法.HAPro ...

  3. [转帖]【Kafka】Kafka配置参数详解

    Kafka配置参数详解 Kafka得安装与基本命令 Kafka配置参数 kafka生产者配置参数 kafka消费者配置参数 本篇文章只是做一个转载的作用以方便自己的阅读,文章主要转载于: Kafka核 ...

  4. [转帖]Unixbench服务器综合性能测试方法及工具下载

    UnixBench是一款开源的测试 unix 系统基本性能的工具,是比较通用的测试VPS性能的工具. UnixBench会执行一系列的测试,包括2D和3D图形系统的性能衡量,测试的结果不仅仅只是CPU ...

  5. [转贴]CPU设计全流程-以Alpha为例

    https://zhuanlan.zhihu.com/p/529872958 1.前言 作为一种超大规模集成电路,CPU在过去几十年里始终遵循摩尔定律--每过十八到二十四个月,硅片单位面积上晶体管数量 ...

  6. Nginx 解决 413 问题的配置.

    Nginx 解决 413 问题的配置. Nginx 容易出现一个错误提示问题: worker_processes 1; events { worker_connections 1024; } http ...

  7. &&运算提高代码质量

    sendGiveWeb: { code: 200, success: true, data: [ { id: "1230", name: "lh" }, { i ...

  8. ABP-VNext 用户权限管理系统实战01---AuthServer服务迁移数据库到mysql

    一.从github上获取源码后修改命名空间 下载dome后修改解决方案名为Bridge. 二.默认是连接sqlserver的,需要修改为可以连接mysql 修改appsettings.json文件的C ...

  9. Vue基础系统文章07---webpack安装和配置与打包

    1.当前web开发困境 a.文件依赖关系错综复杂 b.静态资源请求效率低 c.模块化支持不友好 d.浏览器对高级js兼容性低 例如:模块代码实现隔行换色 1)在新建空白文件夹中运行:npm init ...

  10. 安装和定位vimrc

    在上一篇文章中,我们简单开了一个头,阐述了下学习vim的必要性,这章开始,会慢慢由浅入深的学习它的一套完整的,高效的文本编辑方式方法.废话不多说,咱们正式开始吧 安装NeoVim 相对于vim来说,n ...