mybatis-plus-join的MPJLambdaWrapper的使用

一、安装插件

在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);

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天机️灵韵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值