mybatis-plus 项目实战应用:多表多条件筛选返回list

mybatis-plus的实际运用

  • 首先简单的介绍一下需求:在这里插入图片描述

  • 用户表在这里插入图片描述

  • 部门表
    在这里插入图片描述

  • 用户:部门 = 1:1;部门:用户 = 1:n

  • 要求:在有筛选条件的时候按照筛选条件查询用户列表;没有筛选条件时就查询所有。用户表里面只有部门的id(org_id),查询结果需要返回部门的名称;所以在设计表的时候就多留了一个字段 存放部门的名称(临时存放);这个需求如果是用自定义的sql很好的实现;但是用mybatis-plus实现起来对于小编一个刚接触mybatis-plus还是非常的有挑战的。

  • 请看代码:附有注释

public ResponseResult listuserByorgnameandusername(@JsonParam("page") Page<UserInfo> page,String userName,String orgName) {
    	//部门名称查询项目部门id
    	List<String> listOrgId = new ArrayList<>();
    	if(!StringUtils.isEmpty(orgName)){
    		QueryWrapper<OrgInfo> orgInfoQueryWrapper = new QueryWrapper<>();
			orgInfoQueryWrapper.like("f_iu_fullname",orgName);
			List<OrgInfo> listOrg = orgInfoService.list(orgInfoQueryWrapper);
			if(!listOrg.isEmpty()){
				for (OrgInfo orgInfo : listOrg) {
					listOrgId.add(orgInfo.getOrgId());
				}
			}
		}
    	
    	QueryWrapper<UserInfo> userInfoQueryWrapper = new QueryWrapper<>();
		
		if(!StringUtils.isEmpty(userName)){
			userInfoQueryWrapper.like("f_user_name",userName);
		}
		//添加部门筛选条件
		if(!listOrgId.isEmpty()){
			userInfoQueryWrapper.inOrThrow("f_org_id", listOrgId);
		}

		IPage<UserInfo> userInfoList= userInfoService.page(page,userInfoQueryWrapper);
		
		//设置部门名称
		for (UserInfo userInfo : userInfoList.getRecords()) {
			OrgInfo orgInfo = orgInfoMapper.selectById(userInfo.getOrgId());
			if(null!=orgInfo){
				userInfo.setDepartment(orgInfo.getIuFullname());
			}
		}
		//不返回部门其他信息,用户表里面有部门编号和部门名称设置一下值就可以了
		return  ResponseResult.success(userInfoList);

	}

就这样 利用mybatis-plus实现了本该多表操作的 转换成了单表;这样写代码的效率也提高了;
mybatis-plus快速入门学习

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值