querydsl個人使用記錄

暫時沒有找到解決方案:
1.查菜單時遞歸查詢/oracle樹查詢,暫時不能滿足
解決方案(遍歷拼接多個or orgId in(’’)條件):

private void getDepOrgIdIn(QMedDepInfo qMedDepInfo, JPAQuery<DictAuditDto> jpaQuery, List<String> orgIdList) {
		SysUserDto currentSysUser = JwtUtil.getCurrentSysUser();
		if (CommonUtils.isEmpty(orgIdList))
			orgIdList = currentSysUser.getOrgIdList();
		// jpaQuery.where(qMedDepInfo.id.orgId.in(orgIdList));
		int psize = 1000;
		if (orgIdList.size() > psize) {
			int size = (orgIdList.size() / psize);
			int yu = orgIdList.size() % psize;
			size = (yu == 0) ? size : ++size;
			String[] notIn = new String[] { "111" };
			BooleanExpression in = qMedDepInfo.id.orgId.notIn(notIn);
			jpaQuery.where(in);
			for (int i = 0; i < size; i++) {
				// 獲取1000條,拼接in條件
				int start = i * psize;
				int end = i * psize + psize;
				if (yu != 0 && i == size - 1) {
					end = i * psize + yu;
				}
				List<String> newList = orgIdList.subList(start, end);
				jpaQuery.where(in.or(qMedDepInfo.id.orgId.in(newList)));
			}
		} else {
			jpaQuery.where(qMedDepInfo.id.orgId.in(orgIdList));
		}
	}
發佈了29 篇原創文章 · 獲贊 10 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章