MyBatis-Plus多表关联分页方式

 更新时间:2026年05月15日 10:42:18   作者:Tiger_Paul  
文章介绍了使用MyBatis-Plus的QueryWrapper进行多表关联查询的方法,通过select()方法定义需要的字段,将ID字段转化为名称字段,实现一次查询,这种方法简单便捷,但在使用where语句查询子表字段时有一定限制,作者建议建立数据库视图表作为更好的解决方案

MyBatis-Plus多表关联分页

经常会遇到列表页要关联几个表查询,主表只保存关联表的ID,要显示关联表的ID,则需要查询列表时一起查出来。

使用MyBatis-Plus可以使用多种方式联合查询,例如使用mapper 的 xml ,也可以使用 QueryWrapper 提供的方法查询。

下面介绍最简单

最便捷的方法,上代码:

QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>();

wrapper.select("id","spu_name","weight","publish_status","create_time","update_time",
 "(SELECT b.name FROM pms_brand b WHERE b.brand_id = pms_spu_info.brand_Id) AS brandName" ,
 "(SELECT c.name FROM pms_category c WHERE c.cat_id = pms_spu_info.catalog_Id) AS categoryName");

IPage<SpuInfoEntity> page = this.page(
   new Query<SpuInfoEntity>().getPage(params),
   wrapper
);

return new PageUtils(page);

使用 QueryWrapper 的 select()方法定义需要搜索的字段,将ID字段转化为名称字段,这样就可以写一次查询,其他交给MySQL执行。

这种方法比 Left JOIN 方法要多了几毫秒

分页每次读10-20条也不影响。

分类和品牌都读出来了。

以上方式有缺点,要查询子表的字段时,无法使用语句where。

所以我认为最好的方式就是建立数据库视图表,通过查询视图表返回一个VO

总结

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JAVA中单元测试的常用方式(小结)

    JAVA中单元测试的常用方式(小结)

    这篇文章主要介绍了JAVA中单元测试的常用方式(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Java基于NIO实现群聊功能

    Java基于NIO实现群聊功能

    这篇文章主要为大家详细介绍了Java基于NIO实现群聊功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • JAVA内存空间相关知识汇总

    JAVA内存空间相关知识汇总

    这篇文章主要介绍了JAVA内存空间相关知识,文中介绍的非常详细,代码帮助大家更好的参考和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java转义字符详细介绍

    Java转义字符详细介绍

    这篇文章主要介绍了Java转义字符的相关资料,包括换行符、回车符、换页符、退格符、空字符、空格、制表符、单引号、双引号、反斜杠以及八进制和十六进制字符,通过代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • springboot命令行启动的方法详解

    springboot命令行启动的方法详解

    这篇文章主要介绍了springboot命令行启动的方法,本文通过两种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Spring中@DependsOn注解的作用及实现原理解析

    Spring中@DependsOn注解的作用及实现原理解析

    这篇文章主要介绍了Spring中@DependsOn注解的作用及实现原理解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • maven工程中读取resources中的资源文件

    maven工程中读取resources中的资源文件

    Web项目中应该经常有这样的需求,在maven项目的resources目录下放一些文件,比如一些配置文件,资源文件等,本文主要介绍了maven工程中读取resources中的资源文件,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Java8中Lambda表达式的理解与应用

    Java8中Lambda表达式的理解与应用

    Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python或者javascript的语言基础,对理解Lambda表达式有很大帮助,下面这篇文章主要给大家介绍了关于Java8中Lambda表达式的相关资料,需要的朋友可以参考下
    2022-02-02
  • jenkins和sonar实现代码检测过程详解

    jenkins和sonar实现代码检测过程详解

    这篇文章主要介绍了jenkins和sonar实现代码检测过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java中常见的日期操作(取值、转换、加减、比较)

    Java中常见的日期操作(取值、转换、加减、比较)

    本文给大家介绍java中常见的日期操作,日期取值、日期转换、日期加减、日期比较,对java日期操作相关知识感兴趣的朋友一起学习吧
    2015-12-12

最新评论