[开源]MyBatis-Plus 最佳搭档,只增强不改变,简化开发为效率而生

开源系统流程管理
2026-06-28 06:09 3 次浏览 • 0 次下载 0KB
[开源]MyBatis-Plus 最佳搭档,只增强不改变,简化开发为效率而生

一、开源项目简介

Mybatis-Plus-Join-Logo

MyBatis-Plus-Join

为简化开发工作、提高生产率而生

支持连表查询的mybatis-plus体验!mybatis-plus风格的连表操作,提供 leftJoin、rightJoin、innerJoin连表操。

二、开源协议

使用Apache-2.0开源协议

三、界面展示

图片

四、功能概述

MyBatis-Plus-Join

MyBatis-Plus 最佳搭档,只做增强不做改变,为简化开发、提高效率而生。

润物无声

只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。

效率至上

只需简单配置,即可快速进行连表操作,从而节省大量时间。

丰富功能

支持列枚举, 别名, 逻辑删除, TypeHandle, 一对一, 一对多等功能。

五、技术选型

使用方法

安装

  • Maven
<dependency>
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-boot-starter</artifactId>
<version>1.5.3</version>
</dependency>
Null
  • Gradle
implementation 'com.github.yulichang:mybatis-plus-join-boot-starter:1.5.3'
Apache
或者clone代码到本地执行 mvn install, 再引入以上依赖
注意: MyBatis Plus版本需要3.1.2+

使用

  • mapper继承MPJBaseMapper

Lambda形式用法(MPJLambdaWrapper)

简单的连表查询

class test {
    @Resource
    private UserMapper userMapper;
    void testJoin() {
        //和Mybatis plus一致,MPJLambdaWrapper的泛型必须是主表的泛型,并且要用主表的Mapper来调用
        MPJLambdaWrapper<UserDO> 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<UserDTO> list = userMapper.selectJoinList(UserDTO.class, wrapper);
        //分页查询 (需要启用 mybatis plus 分页插件)
        Page<UserDTO> listPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class, wrapper);
    }
}
PHP

对应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 > ?)
SQL