侧边栏壁纸
博主头像
gale-blog博主等级

少年一贯快马扬帆,道阻且长不转弯,要盛大,要绚烂,要哗然,要用理想的泰坦尼克号去撞现实冰川,要当烧赤壁的风,而非借箭草船,要为了一片海,就肯翻万山

  • 累计撰写 39 篇文章
  • 累计创建 5 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

MybatisPlus实现连表操作

二月在这里
2024-03-21 / 0 评论 / 0 点赞 / 25 阅读 / 3314 字

mybatispuls的连表操作

一般来使用mybatisPlus多数情况下都是用来单表查询的,或者使用xml的形式将连表的sql写入进去,但是需要用到mybatisPuls来实现多表查询的时候就需要引入新的包来支持连表查询,这个插件可以实现连表查询,MyBatis-Plus-Join,用来弥补mybatisplus再连表上的不足

项目地址

Gitee 地址 https://gitee.com/best_handsome/mybatis-plus-join

Github 地址 https://github.com/yulichang/mybatis-plus-join

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

或者clone代码到本地执行 mvn install, 再引入以上依赖
注意: mybatis plus version 3.3.0+

下面的操作就和mybatisPuls的操作一样了

一个简单的代码示例

class test {
    @Resource
    private UserMapper userMapper;

    void testJoin() {
        //和Mybatis plus一致,MPJLambdaWrapper的泛型必须是主表的泛型,并且要用主表的Mapper来调用
        MPJLambdaWrapper<UserDO> wrapper = new MPJLambdaWrapper<UserDO>()
                .selectAll(UserDO.class)//查询user表全部字段
                .select(UserAddressDO::getTel)//查询user_address tel 字段
                .selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)//别名 t.address AS userAddress
                .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);
    }
}

0

评论区