MyBatis-Plus MyBatis-Plus-Join JOIN 实际应用 多表查询 selectAs 批量模糊查询

记录一下,看官方文档比较慢

Join查询

    public List<TzLyApproveData> selectTzLyApproveDataList(TzLyApproveData tzLyApproveData) {


        MPJLambdaWrapper<TzLyApproveData> queryWrapper = JoinWrappers.lambda(TzLyApproveData.class);
        queryWrapper.selectAll(TzLyApproveData.class)
                .selectAs("createdApprove", TzLyLeaveUser::getUsername, TzLyApproveData::getCreatedApproveUserName)
                .selectAs("approve", TzLyLeaveUser::getUsername, TzLyApproveData::getApproveUserName)
                .selectAs("dept", SysDept::getDeptName, TzLyApproveData::getCreatedApproveUnitOfficeName)
                .leftJoin(TzLyLeaveUser.class, "createdApprove", on -> on.eq(TzLyApproveData::getCreatedApproveUserId, TzLyLeaveUser::getLyUserId))
                .leftJoin(TzLyLeaveUser.class, "approve", on -> on.eq(TzLyApproveData::getApproveUserId, TzLyLeaveUser::getLyUserId))
                .leftJoin(SysDept.class, "dept", on -> on.eq(TzLyLeaveUser::getUnitOffice, SysDept::getDeptId));
        queryWrapper.in(TzLyApproveData::getApproveState, Arrays.asList(2, 3, 4));
        queryWrapper.eq(TzLyApproveData::getDelState, "1");
        queryWrapper.orderByDesc(TzLyApproveData::getCreatedDate);
        if (ObjectUtils.isNotEmpty(tzLyApproveData)) {
            queryWrapper.like(StringUtils.isNotBlank(tzLyApproveData.getCreatedApproveUserName()), TzLyLeaveUser::getUsername, tzLyApproveData.getCreatedApproveUserName());
            queryWrapper.eq(ObjectUtils.isNotEmpty(tzLyApproveData.getCreatedApproveUnitOffice()), TzLyLeaveUser::getUnitOffice, tzLyApproveData.getCreatedApproveUnitOffice());
            if (ObjectUtils.isNotEmpty(tzLyApproveData.getReportStart()) && ObjectUtils.isNotEmpty(tzLyApproveData.getReportEnd())) {
                queryWrapper.between(TzLyApproveData::getReportStart, tzLyApproveData.getReportStart(), tzLyApproveData.getReportEnd());
            }
            queryWrapper.eq(ObjectUtils.isNotEmpty(tzLyApproveData.getApproveState()), TzLyApproveData::getApproveState, tzLyApproveData.getApproveState());
        }
        return this.list(queryWrapper);
    }

批量模糊查询

    public List<SubReviewForm> getAllReviewChildByIds(String publishingId, List<String> ids, String systemType, String sort) {
        LambdaQueryWrapper<SubReviewForm> queryWrapper = new LambdaQueryWrapper<>();
        //管理端能查看全部评论,app只能看显示评论
        if (StringUtils.equals("app", systemType)) {
            queryWrapper.eq(SubReviewForm::getIsShow, 0);
        }

        queryWrapper.eq(SubReviewForm::getIsDeleted, 0);
        queryWrapper.and(q -> {
            for (String id : ids) {
                q.likeRight(SubReviewForm::getSubPublishingPath, publishingId + "," + id);
            }
        });
        if (StringUtils.equals(sort, "ASC")) {
            queryWrapper.orderByAsc(SubReviewForm::getCreateTime);
        } else {
            queryWrapper.orderByDesc(SubReviewForm::getCreateTime);
        }

        return this.list(queryWrapper);
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis-Plus是一个基于MyBatis的增强工具,它提供了很多便捷的功能来简化开发。在MyBatis-Plus中,实现连表查询可以通过使用Wrapper(条件构造器)来实现。 下面是使用MyBatis-Plus实现连表查询的步骤: 1. 创建Wrapper对象:使用QueryWrapper或者LambdaQueryWrapper来创建一个Wrapper对象,用于构建查询条件。 2. 设置关联表:通过调用Wrapper对象的join方法,传入关联表的表名和关联条件,来设置关联表。 3. 执行查询:通过调用MyBatis-Plus提供的selectList或者selectPage方法,传入Wrapper对象作为参数,来执行查询操作。 下面是一个示例代码,演示如何使用MyBatis-Plus实现连表查询: ```java // 创建Wrapper对象 QueryWrapper<User> wrapper = new QueryWrapper<>(); // 设置关联表 wrapper.join("user_role", "user_role.user_id = user.id") .join("role", "role.id = user_role.role_id") .select("user.id", "user.name", "role.name as roleName"); // 执行查询 List<Map<String, Object>> userList = userMapper.selectMaps(wrapper); ``` 在上面的示例中,我们创建了一个QueryWrapper对象,并通过join方法设置了两个关联表:user_role和role。然后通过select方法指定了需要查询的字段。最后调用selectMaps方法执行查询,并将结果以List<Map<String, Object>>的形式返回。 注意:这里使用了selectMaps方法来返回结果,可以得到一个包含多个Map对象的List,每个Map对象表示一条查询结果,其中key为字段名,value为字段值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值