搜索文档
MyBatis-Plus-Join(简称 MPJ)是一个 MyBatis-Plus 的增强工具,它在 MyBatis-Plus 的基础上提供增强功能,以简化开发并提高效率。
以 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 如下:
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
MPJ 自动处理了租户隔离、逻辑删除等特性,生成的 SQL 包含了必要的过滤条件。
请参考 mybatisplusjoin 官方文档