# mybatis-plus-join
**Repository Path**: best_handsome/mybatis-plus-join
## Basic Information
- **Project Name**: mybatis-plus-join
- **Description**: 支持连表查询的mybatis-plus体验!mybatis-plus风格的连表操作,提供
leftJoin、rightJoin、innerJoin连表操作
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://mybatis-plus-join.github.io
- **GVP Project**: No
## Statistics
- **Stars**: 1802
- **Forks**: 317
- **Created**: 2021-01-27
- **Last Updated**: 2025-11-03
## Categories & Tags
**Categories**: database-dev
**Tags**: MyBatis, MybatisPlus, SQL, 低代码, JDBC
## README
  
   
  
MyBatis-Plus-Join
  为简化开发工作、提高生产率而生
  
    
  
  
    
  
  
    
  
  
    
  
对 MyBatis-Plus 多表查询的扩展 |
演示工程 |
使用文档 |
点个Star支持一下吧 (☆▽☆)
添加作者微信,备注MPJ,加入微信群  
### 使用文档WIKI
## 使用方法
### 安装
- Maven
  ```xml
  
      com.github.yulichang
      mybatis-plus-join-boot-starter
      1.5.4
  
  ```
- Gradle
  ```
   implementation 'com.github.yulichang:mybatis-plus-join-boot-starter:1.5.4'
  ```
  或者clone代码到本地执行 `mvn install`, 再引入以上依赖  
  
  注意: MyBatis Plus版本需要3.1.2+
  
### 使用
* mapper继承MPJBaseMapper
### Lambda形式用法(MPJLambdaWrapper)
#### 简单的连表查询
```java
class test {
    @Resource
    private UserMapper userMapper;
    void testJoin() {
        //和Mybatis plus一致,MPJLambdaWrapper的泛型必须是主表的泛型,并且要用主表的Mapper来调用
        MPJLambdaWrapper wrapper = JoinWrappers.lambda(UserDO.class)
                .selectAll(UserDO.class)//查询user表全部字段
                .select(UserAddressDO::getTel)//查询user_address tel 字段
                .selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)//别名
                .select(AreaDO::getProvince, AreaDO::getCity)
                .leftJoin(UserAddressDO.class, UserAddressDO::getUserId, UserDO::getId)
                .leftJoin(AreaDO.class, AreaDO::getId, UserAddressDO::getAreaId)
                .eq(UserDO::getId, 1)
                .like(UserAddressDO::getTel, "1")
                .gt(UserDO::getId, 5);
        //连表查询 返回自定义ResultType
        List list = userMapper.selectJoinList(UserDTO.class, wrapper);
        //分页查询 (需要启用 mybatis plus 分页插件)
        Page listPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class, wrapper);
    }
}
```
对应sql
```
SELECT  
    t.id, t.name, t.sex, t.head_img, 
    t1.tel, t1.address AS userAddress,
    t2.province, t2.city 
FROM 
    user t 
    LEFT JOIN user_address t1 ON t1.user_id = t.id 
    LEFT JOIN area t2 ON t2.id = t1.area_id 
WHERE (
    t.id = ? 
    AND t1.tel LIKE ? 
    AND t.id > ?)
```
# 完整使用文档 wiki
# 用爱发电