From fa2b9250bd671cb61f363c24d6fa2d0d0ab7d9f8 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 22 一月 2024 15:36:04 +0800
Subject: [PATCH] 添加 驼峰转换为下划线

---
 src/main/java/com/moon/server/service/all/BaseQueryService.java |   37 ++++++++++++++++++++++++++++++-------
 1 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/moon/server/service/all/BaseQueryService.java b/src/main/java/com/moon/server/service/all/BaseQueryService.java
index 41d19ad..bbef592 100644
--- a/src/main/java/com/moon/server/service/all/BaseQueryService.java
+++ b/src/main/java/com/moon/server/service/all/BaseQueryService.java
@@ -61,7 +61,7 @@
                 continue;
             }
 
-            String field = convertFiled(str.substring(0, start).trim());
+            String field = camelToUnderline(str.substring(0, start).trim());
             String express = str.substring(start + 1, end).trim().toLowerCase();
             String value = str.substring(end + 1).trim();
 
@@ -76,20 +76,43 @@
     }
 
     /**
-     * 瀛楁杞崲
+     * 椹煎嘲杞崲涓轰笅鍒掔嚎
      */
-    private String convertFiled(String field) {
+    public static String camelToUnderline(String str) {
         StringBuilder sb = new StringBuilder();
-        for (int i = 0, c = field.length(); i < c; i++) {
-            char ch = field.charAt(i);
+        for (int i = 0, c = str.length(); i < c; i++) {
+            char ch = str.charAt(i);
             if (Character.isUpperCase(ch)) {
-                sb.append('_');
-                sb.append(Character.toLowerCase(ch));
+                sb.append('_').append(Character.toLowerCase(ch));
             } else {
                 sb.append(ch);
             }
         }
 
+        return sb.toString().replaceAll("_+", "_");
+    }
+
+    /**
+     * 涓嬪垝绾胯浆鎹负椹煎嘲
+     */
+    public static String underlineToCamel(String str) {
+        StringBuilder sb = new StringBuilder();
+
+        boolean nextIsCapitalized = false;
+        for (int i = 0, c = str.length(); i < c; i++) {
+            char ch = str.charAt(i);
+            if (ch == '_') {
+                nextIsCapitalized = true;
+                continue;
+            }
+            if (nextIsCapitalized) {
+                sb.append(Character.toUpperCase(ch));
+                nextIsCapitalized = false;
+            } else {
+                sb.append(Character.toLowerCase(c));
+            }
+        }
+
         return sb.toString();
     }
 

--
Gitblit v1.9.3