MyBatis-Plus多表关联分页方式
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
总结
这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringBoot应用是否存在MySQL连接泄漏问题的排查方法
这篇文章主要介绍了排查SpringBoot应用MySQL连接泄漏的方法,需检查连接数、空闲连接,配置连接池参数,确保资源关闭,并使用监控工具如Actuator和Prometheus分析,需要的朋友可以参考下2025-06-06
SpringBoot使用RabbitMQ延时队列(小白必备)
这篇文章主要介绍了SpringBoot使用RabbitMQ延时队列(小白必备),详细的介绍延迟队列的使用场景及其如何使用,需要的小伙伴可以一起来了解一下2019-12-12
Spring Boot中WebMvcConfig配置详解及示例代码
WebMvcConfig是一个配置类,它继承了WebMvcConfigurationSupport,允许我们对SpringMVC进行更细粒度的控制,这篇文章主要给大家介绍了关于Spring Boot中WebMvcConfig配置详解及示例的相关资料,需要的朋友可以参考下2024-03-03
java在linux系统下开机启动无法使用sudo命令的原因及解决办法
每次开机自动启动的java进程,页面上的关机按钮都无法实现关机功能,但是此时如果以chb账号通过ssh登录该服务器,手动杀掉tomcat进程,然后再重新启动tomcat,页面上的关机按钮就有效了2013-08-08


最新评论