📄 MyBatis-Plus连表查询
内部资料,请刷新扫码登录
pigcloud
MyBatis-Plus-Join(简称 MPJ)是一个 MyBatis-Plus 的增强工具,它在 MyBatis-Plus 的基础上提供增强功能,以简化开发并提高效率。
- 无侵入:引入 MPJ 不会对现有工程产生影响,只提供增强功能,顺畅无缝
- 无感引入:支持 MP 风格的查询,无需额外学习成本
- 兼容 MP 的别名、逻辑删除、枚举列、TypeHandle 等特性
- 支持注解形式的一对一、一对多和连表查询
# 连表查询
以 APP 模块的用户文章收藏表 app_article_collect 和文章表 app_article 为例,查询用户收藏列表时,需要关联显示对应的文章标题。
# ① 表结构如下
# ② 连表查询如下
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
public R getAppArticleCollectPage(@ParameterObject Page page) {
MPJLambdaWrapper<AppArticleCollectEntity> wrapper = new MPJLambdaWrapper<AppArticleCollectEntity>()
.selectAll(AppArticleCollectEntity.class)
.select(AppArticleEntity::getTitle)
.leftJoin(AppArticleEntity.class, AppArticleEntity::getId, AppArticleCollectEntity::getArticleId)
.eq(AppArticleCollectEntity::getUserId, SecurityUtils.getUser().getId());
return R.ok(appArticleCollectService.selectJoinListPage(page, AppArticleCollectEntity.class, wrapper));
}
- 自动生成 SQL,实际执行的 SQL 如下
SELECT
t.id,
t.user_id,
t.article_id,
t.create_by,
t.create_time,
t.update_by,
t.update_time,
t.del_flag,
t1.title
FROM
app_article_collect t
LEFT JOIN app_article t1 ON t1.id = t.article_id
AND t1.tenant_id = 1
WHERE
t.del_flag = '0'
AND t1.del_flag = '0'
AND ( t.user_id = 1 )
AND t.tenant_id = 1
LIMIT 10