From 64fbaade243d27b3ac0a97b73c6e028292a18553 Mon Sep 17 00:00:00 2001
From: L&J <609069481@qq.com>
Date: Wed, 24 Jan 2024 22:02:23 +0800
Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E5=A4=A7=E5=86=99=E4=B8=8B=E6=BB=91?=
=?UTF-8?q?=E4=B8=8B=E5=88=97=E5=90=8D=E8=BD=AC=E9=A9=BC=E5=B3=B0=E9=97=AE?=
=?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
修改前: CREATE_TIME -> cREATETIME
修改后: CREATE_TIME -> createTime
---
.../java/com/softdev/system/generator/util/StringUtils.java | 2 +-
generator-web/src/test/java/FooTest.java | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/generator-web/src/main/java/com/softdev/system/generator/util/StringUtils.java b/generator-web/src/main/java/com/softdev/system/generator/util/StringUtils.java
index 061d94a..b1fdeb4 100644
--- a/generator-web/src/main/java/com/softdev/system/generator/util/StringUtils.java
+++ b/generator-web/src/main/java/com/softdev/system/generator/util/StringUtils.java
@@ -47,7 +47,7 @@ public class StringUtils {
result.append(Character.toUpperCase(ch));
flag = false;
} else {
- result.append(ch);
+ result.append(Character.toLowerCase(ch));
}
}
}
diff --git a/generator-web/src/test/java/FooTest.java b/generator-web/src/test/java/FooTest.java
index 1a9254f..bbdff21 100644
--- a/generator-web/src/test/java/FooTest.java
+++ b/generator-web/src/test/java/FooTest.java
@@ -19,6 +19,8 @@ public class FooTest {
System.out.println(StringUtils.toUnderline("UserName",true));
System.out.println(StringUtils.toUnderline("user_NameGgg_x-UUU",true));
System.out.println(StringUtils.toUnderline("username",true));
+
+ System.out.println(StringUtils.underlineToCamelCase("CREATE_TIME"));
}
From 48054f3a6b99fd3648a33b2654d3256334065c46 Mon Sep 17 00:00:00 2001
From: L&J <609069481@qq.com>
Date: Sat, 27 Jan 2024 00:05:02 +0800
Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E5=A4=A7=E5=86=99=E4=B8=8B=E6=BB=91?=
=?UTF-8?q?=E4=B8=8B=E5=88=97=E5=90=8D=E8=BD=AC=E9=A9=BC=E5=B3=B0=E9=97=AE?=
=?UTF-8?q?=E9=A2=98,=20=E6=96=B0=E5=A2=9EtoLowerCamel=20=E6=96=B9?=
=?UTF-8?q?=E6=B3=95=E6=90=9E=E5=AE=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
修改前: CREATE_TIME -> cREATETIME
修改后: CREATE_TIME -> createTime
---
generator-web/pom.xml | 5 +-
.../system/generator/util/StringUtils.java | 40 ++++++++-
.../system/generator/util/TableParseUtil.java | 10 +--
.../generator/util/StringUtilsTest.java | 81 +++++++++++++++++++
4 files changed, 124 insertions(+), 12 deletions(-)
create mode 100644 generator-web/src/test/java/com/softdev/system/generator/util/StringUtilsTest.java
diff --git a/generator-web/pom.xml b/generator-web/pom.xml
index c6ace66..be74e21 100644
--- a/generator-web/pom.xml
+++ b/generator-web/pom.xml
@@ -36,10 +36,11 @@
spring-boot-starter-data-jpa
-->
-
+ test
+
org.springframework.boot
diff --git a/generator-web/src/main/java/com/softdev/system/generator/util/StringUtils.java b/generator-web/src/main/java/com/softdev/system/generator/util/StringUtils.java
index b1fdeb4..4274c88 100644
--- a/generator-web/src/main/java/com/softdev/system/generator/util/StringUtils.java
+++ b/generator-web/src/main/java/com/softdev/system/generator/util/StringUtils.java
@@ -14,6 +14,9 @@ public class StringUtils {
* @return
*/
public static String upperCaseFirst(String str) {
+ if (str == null || str.trim().isEmpty()) {
+ return str;
+ }
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
@@ -47,7 +50,7 @@ public class StringUtils {
result.append(Character.toUpperCase(ch));
flag = false;
} else {
- result.append(Character.toLowerCase(ch));
+ result.append(ch);
}
}
}
@@ -89,12 +92,41 @@ public class StringUtils {
return result.toString();
}
+ /**
+ * any str ==> lowerCamel
+ */
+ public static String toLowerCamel(String str) {
+ if (str == null || str.trim().isEmpty()) {
+ return str;
+ }
- public static boolean isNotNull(String str){
- return org.apache.commons.lang3.StringUtils.isNotEmpty(str);
+ StringBuilder result = new StringBuilder();
+ char pre = '\0';
+ for (int i = 0; i < str.length(); i++) {
+ char ch = str.charAt(i);
+ if (ch == '-' || ch == '—' || ch == '_') {
+ ch = '_';
+ pre = ch;
+ continue;
+ }
+ char ch2 = ch;
+ if (pre == '_') {
+ ch2 = Character.toUpperCase(ch);
+ pre = ch2;
+ } else if (pre >= 'A' && pre <= 'Z') {
+ pre = ch;
+ ch2 = Character.toLowerCase(ch);
+ } else {
+ pre = ch;
+ }
+ result.append(ch2);
+ }
+
+ return lowerCaseFirst(result.toString());
}
- public static void main(String[] args) {
+ public static boolean isNotNull(String str) {
+ return org.apache.commons.lang3.StringUtils.isNotEmpty(str);
}
}
diff --git a/generator-web/src/main/java/com/softdev/system/generator/util/TableParseUtil.java b/generator-web/src/main/java/com/softdev/system/generator/util/TableParseUtil.java
index 7104ad8..3e30dcc 100644
--- a/generator-web/src/main/java/com/softdev/system/generator/util/TableParseUtil.java
+++ b/generator-web/src/main/java/com/softdev/system/generator/util/TableParseUtil.java
@@ -164,7 +164,7 @@ public class TableParseUtil {
// 2019-2-22 zhengkai 要在条件中使用复杂的表达式
// 2019-4-29 zhengkai 优化对普通和特殊storage关键字的判断(感谢@AhHeadFloating的反馈 )
// 2020-10-20 zhengkai 优化对fulltext/index关键字的处理(感谢@WEGFan的反馈)
- // 2023-8-27 zhangfei 改用工具方法判断, 且修改变量名(非特殊标识), 方法抽取
+ // 2023-8-27 L&J 改用工具方法判断, 且修改变量名(非特殊标识), 方法抽取
boolean notSpecialFlag = isNotSpecialColumnLine(columnLine, i);
if (notSpecialFlag) {
@@ -185,13 +185,11 @@ public class TableParseUtil {
// field Name
// 2019-09-08 yj 添加是否下划线转换为驼峰的判断
- // 2023-8-27 zhangfei 支持原始列名任意命名风格, 不依赖用户是否输入下划线
+ // 2023-8-27 L&J 支持原始列名任意命名风格, 不依赖用户是否输入下划线
String fieldName = null;
if (ParamInfo.NAME_CASE_TYPE.CAMEL_CASE.equals(nameCaseType)) {
- fieldName = StringUtils.lowerCaseFirst(StringUtils.underlineToCamelCase(columnName));
- if (fieldName.contains("_")) {
- fieldName = fieldName.replaceAll("_", "");
- }
+ // 2024-1-27 L&J 适配任意(maybe)原始风格转小写驼峰
+ fieldName = StringUtils.toLowerCamel(columnName);
} else if (ParamInfo.NAME_CASE_TYPE.UNDER_SCORE_CASE.equals(nameCaseType)) {
fieldName = StringUtils.toUnderline(columnName, false);
} else if (ParamInfo.NAME_CASE_TYPE.UPPER_UNDER_SCORE_CASE.equals(nameCaseType)) {
diff --git a/generator-web/src/test/java/com/softdev/system/generator/util/StringUtilsTest.java b/generator-web/src/test/java/com/softdev/system/generator/util/StringUtilsTest.java
new file mode 100644
index 0000000..b7fbdca
--- /dev/null
+++ b/generator-web/src/test/java/com/softdev/system/generator/util/StringUtilsTest.java
@@ -0,0 +1,81 @@
+package com.softdev.system.generator.util;
+
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+public class StringUtilsTest {
+
+ @Test
+ public void toLowerCamel() {
+ System.out.println(StringUtils.toLowerCamel("hello_world"));
+ System.out.println(StringUtils.toLowerCamel("HELLO_WO-RLD-IK"));
+ System.out.println(StringUtils.toLowerCamel("HELLO_WORLD-IKabc"));
+ System.out.println(StringUtils.toLowerCamel("HELLO-WORLD-IKabc"));
+ System.out.println(StringUtils.toLowerCamel("HELLO-123WORLD-IKabc"));
+ System.out.println(StringUtils.toLowerCamel("helloWorldOKla"));
+ assertEquals("helloWorldChina", StringUtils.toLowerCamel("hello_-_world-cHina"));
+ }
+
+ @Test
+ public void upperCaseFirstShouldReturnStringWithFirstLetterCapitalized() {
+ assertEquals("Hello", StringUtils.upperCaseFirst("hello"));
+ }
+
+ @Test
+ public void upperCaseFirstShouldReturnEmptyStringWhenInputIsEmpty() {
+ assertEquals("", StringUtils.upperCaseFirst(""));
+ }
+
+ @Test
+ public void lowerCaseFirstShouldReturnStringWithFirstLetterLowercased() {
+ assertEquals("hello", StringUtils.lowerCaseFirst("Hello"));
+ }
+
+ @Test
+ public void lowerCaseFirstShouldReturnEmptyStringWhenInputIsEmpty() {
+ assertEquals("", StringUtils.lowerCaseFirst(""));
+ }
+
+ @Test
+ public void underlineToCamelCaseShouldReturnCamelCaseString() {
+ assertEquals("helloWorld", StringUtils.underlineToCamelCase("hello_world"));
+ }
+
+ @Test
+ public void underlineToCamelCaseShouldReturnEmptyStringWhenInputIsEmpty() {
+ assertEquals("", StringUtils.underlineToCamelCase(""));
+ }
+
+ @Test
+ public void toUnderlineShouldReturnUnderlinedString() {
+ assertEquals("hello_world", StringUtils.toUnderline("helloWorld", false));
+ }
+
+ @Test
+ public void toUnderlineShouldReturnEmptyStringWhenInputIsEmpty() {
+ assertEquals("", StringUtils.toUnderline("", false));
+ }
+
+ @Test
+ public void toCamelShouldReturnCamelCaseString() {
+ assertEquals("helloWorld", StringUtils.toLowerCamel("hello_world"));
+ }
+
+ @Test
+ public void toCamelShouldReturnEmptyStringWhenInputIsEmpty() {
+ assertEquals("", StringUtils.toLowerCamel(""));
+ }
+
+ @Test
+ public void isNotNullShouldReturnTrueWhenStringIsNotEmpty() {
+ assertTrue(StringUtils.isNotNull("hello"));
+ }
+
+ @Test
+ public void isNotNullShouldReturnFalseWhenStringIsEmpty() {
+ assertFalse(StringUtils.isNotNull(""));
+ }
+}