From d02571d59633367ac76b7f58ab38584698b1aa1b Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 17 十月 2024 09:55:37 +0800 Subject: [PATCH] 高级查询中增加范围查询功能 --- Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MybatisParameterUtil.java | 72 +++++++++++++++++++++++++++++++++++ 1 files changed, 71 insertions(+), 1 deletions(-) diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MybatisParameterUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MybatisParameterUtil.java index 4c644ef..5f9e2f6 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MybatisParameterUtil.java +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MybatisParameterUtil.java @@ -14,7 +14,7 @@ import java.util.Map; /** - * in 鍙傛暟鎴彇锛岃繑鍥瀢rapper + * in 鍙傛暟鎴彇锛岃繑鍥瀢rapper/鎴栬�厀here鏉′欢瀛楃涓� * * @author ludc * @date 2023/5/5 @@ -22,6 +22,76 @@ public class MybatisParameterUtil { /** + * Oracle IN 鏌ヨ鐨勬渶澶у弬鏁伴檺鍒� + */ + private static final int MAX_IN_CLAUSE_SIZE = 1000; + + /** + * 灏嗙粰瀹氱殑 ID 鍒楄〃杞崲涓洪�傚悎 Oracle 鐨勬煡璇㈡潯浠� + * + * @param ids ID 鍒楄〃 + * @return 閫傚悎 Oracle 鐨勬煡璇㈡潯浠� + */ + public static String convertToOrConditions(String filed,List<String> ids) { + if (ids == null || ids.isEmpty()) { + return ""; + } + + StringBuilder queryBuilder = new StringBuilder(); + int size = ids.size(); + + // 鍒嗘壒澶勭悊锛岄伩鍏嶈秴杩� Oracle IN 鏌ヨ鐨勬渶澶ч檺鍒� + for (int i = 0; i < size; i += MAX_IN_CLAUSE_SIZE) { + int end = Math.min(i + MAX_IN_CLAUSE_SIZE, size); + List<String> subList = ids.subList(i, end); + if (queryBuilder.length() > 0) { + queryBuilder.append(" OR "); + } + queryBuilder.append("(") + .append(getInClause(filed,subList)).append(")"); + } + + return queryBuilder.toString(); + } + + /* + * 鑾峰彇 IN 鏌ヨ鏉′欢瀛楃涓� + * @param ids ID 鍒楄〃 + * @return IN 鏌ヨ鏉′欢瀛楃涓� + */ + private static String getInClause(String filed,List<String> ids) { + StringBuilder inClauseBuilder = new StringBuilder(); + inClauseBuilder.append(filed + " IN ("); + + for (int i = 0; i < ids.size(); i++) { + inClauseBuilder.append("'").append(ids.get(i)).append("'"); + if (i < ids.size() - 1) { + inClauseBuilder.append(", "); + } + } + inClauseBuilder.append(")"); + + return inClauseBuilder.toString(); + } + + /** + * 鑾峰彇 IN 鏌ヨ鏉′欢瀛楃涓诧紙涓嶅寘鍚玦n锛� + * + * @param ids ID 鍒楄〃 + * @return IN 鏌ヨ鏉′欢瀛楃涓� + */ + public static String getInClause(List<String> ids) { + StringBuilder inClauseBuilder = new StringBuilder(); + for (int i = 0; i < ids.size(); i++) { + inClauseBuilder.append("'").append(ids.get(i)).append("'"); + if (i < ids.size() - 1) { + inClauseBuilder.append(", "); + } + } + return inClauseBuilder.toString(); + } + + /** * in浣滀负鏌ヨ鏉′欢鏃讹紝闃叉澶т簬1000鍑虹幇鎶ラ敊锛屽鏉′欢杩涜鎴彇锛岃繛琛ㄦ煡璇㈢殑wrapper * @param wrapper MPJLambdaWrapper,涓嶈繘琛岃繛琛ㄦ煡璇㈡椂浣跨敤 * @param column 浣滀负in鐨勬潯浠跺垪 -- Gitblit v1.9.3