MyBatis-Plus 多表关联分页

经常会遇到列表页要关联几个表查询,主表只保存关联表的ID,要显示关联表的ID,则需要查询列表时一起查出来。使用MyBatis-Plus可以使用多种方式联合查询,例如使用mapper 的 xml ,也可以使用 QueryWrapper 提供的方法查询。下面介绍最简单,最便捷的方法,上代码:

QueryWrapper 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 page = this.page(
   new Query().getPage(params),
   wrapper
);

return new PageUtils(page);

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

这种方法比 Left JOIN 方法要多了几毫秒,分页每次读10-20条也不影响。

MyBatis-Plus 多表关联分页_第1张图片

 分类和品牌都读出来了。

你可能感兴趣的:(java,数据库,mybatis-plus)