一、安装插件
在pom中添加依赖
<dependency>
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-boot-starter</artifactId>
<version>1.5.2</version>
</dependency>
二、MPJLambdaWrapper查询
MPJLambdaWrapper子查询
public PageResult<CouponRespVO> getCouponVOPage(CouponPageReqVO pageReqVO) {
MPJLambdaWrapper<CouponDO> wrapper = JoinWrappers.lambda(CouponDO.class)
.selectAll(CouponDO.class)
.selectAs(MaterialsDO::getMaterialsName, CouponRespVO::getCouponBearer)
.leftJoin(MaterialsDO.class, MaterialsDO::getId, CouponDO::getMaterialsId)
.selectSub(CouponUserDO.class, w -> w.selectAs("count(*)", CouponRespVO::getSendCount)
.eq(CouponUserDO::getCouponId, CouponDO::getId)
.eq(CouponUserDO::getIsUse, "0")
.last("limit 1"), CouponRespVO::getSendCount)
.selectSub(CouponUserDO.class, w -> w.selectAs("count(*)", CouponRespVO::getUseCount)
.eq(CouponUserDO::getCouponId, CouponDO::getId)
.eq(CouponUserDO::getIsUse, "1")
.last("limit 1"), CouponRespVO::getUseCount)
.orderByDesc(CouponDO::getCreateTime);
Page<CouponRespVO> listPage = couponMapper.selectJoinPage(new Page<>(pageReqVO.getPageNo(),
pageReqVO.getPageSize()), CouponRespVO.class, wrapper);
PageResult<CouponRespVO> pageResult = new PageResult<>();
pageResult.setList(listPage.getRecords());
pageResult.setTotal(listPage.getTotal());
return pageResult;
}
MPJLambdaWrapper的leftJoin查询
MPJLambdaWrapper<CouponUserDO> wrapper = JoinWrappers.lambda(CouponUserDO.class)
.selectAll(CouponUserDO.class)
.selectAs(CouponDO::getCouponImgUrl, CouponUserRespVO::getCouponImgUrl)
.selectAs(CouponDO::getCouponType, CouponUserRespVO::getCouponType)
.selectAs(MaterialsDO::getMaterialsName, CouponUserRespVO::getMaterialName)
.leftJoin(CouponDO.class, CouponDO::getId, CouponUserDO::getCouponId)
.leftJoin(MaterialsDO.class, MaterialsDO::getId, CouponDO::getMaterialsId)
.eq(CouponUserDO::getUserId, pageReqVO.getUserId())
.eq(CouponUserDO::getCouponType, pageReqVO.getCouponType())
.orderByDesc(CouponUserDO::getCreateTime);
Page<CouponUserRespVO> listPage = couponUserMapper.selectJoinPage(new Page<>(pageReqVO.getPageNo(),
pageReqVO.getPageSize()), CouponUserRespVO.class, wrapper);
PageResult<CouponUserRespVO> pageResult = new PageResult<>();
pageResult.setList(listPage.getRecords());
pageResult.setTotal(listPage.getTotal());
return pageResult;
MPJLambdaWrapper的groupBy查询
MPJLambdaWrapper<CouponUserDO> wrapper = JoinWrappers.lambda(CouponUserDO.class)
// .selectAll(CouponUserDO.class)
.selectAs(CouponDO::getId, CouponUserSendInfoVO::getCouponId)
.selectAs(CouponDO::getSendType, CouponUserSendInfoVO::getSendType)
.selectAs(CouponUserDO::getCreateTime, CouponUserSendInfoVO::getSendTime)
.selectAs(UserAuthInfoDO::getDesignerName, CouponUserSendInfoVO::getUserName)
.selectAs("count(*)", CouponUserSendInfoVO::getNums)
.leftJoin(CouponDO.class, CouponDO::getId, CouponUserDO::getCouponId)
.leftJoin(UserAuthInfoDO.class, UserAuthInfoDO::getUserId, CouponUserDO::getUserId)
.eq(CouponDO::getId, pageReqVO.getCouponId())
.eq(CouponUserDO::getIsUse, "0")
.groupBy("sendType,sendTime,userName")
.orderByDesc(CouponUserDO::getCreateTime);
//连表查询 返回自定义ResultType
//List<CouponRespVO> list = couponMapper.selectJoinList(CouponRespVO.class, wrapper);
//分页查询 (需要启用 mybatis plus 分页插件)
Page<CouponUserSendInfoVO> listPage = couponUserMapper.selectJoinPage(new Page<>(pageReqVO.getPageNo(),
pageReqVO.getPageSize()), CouponUserSendInfoVO.class, wrapper);
PageResult<CouponUserSendInfoVO> pageResult = new PageResult<>();
pageResult.setList(listPage.getRecords());
pageResult.setTotal(listPage.getTotal());
return pageResult;
LocalDateTime now = LocalDateTime.now();
LambdaQueryWrapper<CouponUserDO> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(CouponUserDO::getUserId, userId);
queryWrapper.eq(CouponUserDO::getIsUse, 0);
queryWrapper.eq(CouponUserDO::getCouponType, CouponTypeEnum.TYPE_2.getCode());
queryWrapper.eq(CouponUserDO::getIsValid, 1);
queryWrapper.ge(CouponUserDO::getValidityEndDate, now);
queryWrapper.le(CouponUserDO::getValidityStartDate, now);
queryWrapper.apply("FIND_IN_SET({0}, product_ids)", productIds);
return couponUserMapper.selectList(queryWrapper);