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);
}
}
评论区