Mybatis-Plus-Join表连接插件集成过程

 更新时间:2025年09月08日 14:13:29   作者:刘火锅  
Mybatis-Plus-Join是Mybatis-Plus的扩展插件,支持左、右、内连接查询,保持原有开发风格,通过JoinLambdaWrapper配置连接关系与查询条件,简化多表关联操作,提升复杂SQL编写效率

概要

Mybatis-Plus-Join 是基于 Mybatis-Plus 的扩展插件,提供了简便的表连接查询功能,支持左连接、右连接和内连接等操作,同时保持 Mybatis-Plus 的使用风格。

官方文档:https://mpj.aicats.cc/

安装配置

1.添加依赖

在 pom.xml 中添加以下依赖:

<dependency>
    <groupId>com.github.yulichang</groupId>
    <artifactId>mybatis-plus-join-boot-starter</artifactId>
    <version>1.4.5</version>
</dependency>

2.配置继承结构

Mapper 层继承

import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;

public interface UserMapper extends JoinBaseMapper<User> {
   
}

Service 接口继承

import icu.mhb.mybatisplus.plugln.base.service.JoinIService;

public interface UserService extends JoinIService<User> {
   
}

Service 实现层继承

import icu.mhb.mybatisplus.plugln.base.service.impl.JoinServiceImpl;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends JoinServiceImpl<UserMapper, User> implements UserService {
   
}

基本使用方法

1. 创建 JoinLambdaWrapper

在 Service 中可直接使用 joinLambdaWrapper() 方法:

// 方式一:通过 Service 直接获取
JoinLambdaWrapper<User> wrapper = userService.joinLambdaWrapper();

// 方式二:手动创建
JoinLambdaWrapper<User> wrapper = new JoinLambdaWrapper<>(User.class);

2. 添加表连接

支持三种连接方式:

// 左连接
wrapper.leftJoin(Department.class, Department::getId, User::getDeptId);

// 右连接
wrapper.rightJoin(Department.class, Department::getId, User::getDeptId);

// 内连接
wrapper.innerJoin(Department.class, Department::getId, User::getDeptId);

3. 添加查询条件

wrapper.eq(Department::getName, "技术部")
       .like(User::getName, "张")
       .gt(User::getAge, 25);

4. 结束连接并执行查询

// 结束当前连接(重要!)
wrapper.end();

// 执行查询
List<UserVO> result = userService.joinList(wrapper, UserVO.class);

多表连接示例

public List<UserVO> findUsersWithMultiJoin() {
    JoinLambdaWrapper<User> wrapper = userService.joinLambdaWrapper();
    
    // 第一重连接:部门表
    wrapper.leftJoin(Department.class, Department::getId, User::getDeptId)
           .selectAs(Department::getName, UserVO::getDeptName)
           .end();
    
    // 第二重连接:职位表
    wrapper.leftJoin(Position.class, Position::getUserId, User::getId)
           .eq(Position::getLevel, "P7")
           .selectAs(Position::getName, UserVO::getPositionName)
           .end();
    
    return userService.joinList(wrapper, UserVO.class);
}

总结

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

相关文章

  • SpringBoot多环境配置完整过程记录

    SpringBoot多环境配置完整过程记录

    SpringBoot多环境配置方案SpringBoot是一个基于Java的框架,提供了多环境配置方案,以便于在不同的环境中灵活应用,这篇文章主要介绍了SpringBoot多环境配置的相关资料,需要的朋友可以参考下
    2026-02-02
  • 线上Java程序占用CPU过高解决方案

    线上Java程序占用CPU过高解决方案

    这篇文章主要介绍了线上Java程序占用CPU过高解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Spring利用注解整合Mybatis的方法详解

    Spring利用注解整合Mybatis的方法详解

    这篇文章主要为大家介绍了Spring如何利用注解整合MyBatis,文中的示例代码讲解详细,对我们学习有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • JDBC的ResultSet使用说明

    JDBC的ResultSet使用说明

    今天小编就为大家分享一篇JDBC的ResultSet使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 创建动态代理对象bean,并动态注入到spring容器中的操作

    创建动态代理对象bean,并动态注入到spring容器中的操作

    这篇文章主要介绍了创建动态代理对象bean,并动态注入到spring容器中的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Maven项目如何在pom文件中引入lib下的第三方jar包并打包进去

    Maven项目如何在pom文件中引入lib下的第三方jar包并打包进去

    在使用Maven进行项目开发时,引入第三方私有的Jar包可能会遇到问题,一种常见的解决方案是将Jar包添加到项目的lib目录,并通过IDE进行配置,但这需要每个开发者单独操作,效率低下,更好的方法是通过Maven的pom.xml文件管理这些Jar包
    2024-09-09
  • java基于netty NIO的简单聊天室的实现

    java基于netty NIO的简单聊天室的实现

    这篇文章主要介绍了java基于netty NIO的简单聊天室的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Springboot项目Maven依赖冲突的问题解决

    Springboot项目Maven依赖冲突的问题解决

    使用Spring Boot和Maven进行项目开发时,依赖冲突是一个常见的问题,本文就来介绍一下Springboot项目Maven依赖冲突的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Javaweb使用thymeleaf局部刷新结合Layui插件实现Html分页

    Javaweb使用thymeleaf局部刷新结合Layui插件实现Html分页

    本文主要介绍了Javaweb使用thymeleaf局部刷新结合Layui插件实现Html分页,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 基于Jasypt对SpringBoot配置文件加密

    基于Jasypt对SpringBoot配置文件加密

    这篇文章主要介绍了基于Jasypt对SpringBoot配置文件加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论