Merge pull request #151 from Nisus-Liu/bugfix/143-sqlcamel

fix: 大写下滑下列名转驼峰问题
This commit is contained in:
Moshow郑锴 2024-01-29 23:50:17 +08:00 committed by GitHub
commit 6d1f29b17c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 125 additions and 11 deletions

View File

@ -36,10 +36,11 @@
<artifactId>spring-boot-starter-data-jpa</artifactId> <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>--> </dependency>-->
<!--<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
</dependency>--> <scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>

View File

@ -14,6 +14,9 @@ public class StringUtils {
* @return * @return
*/ */
public static String upperCaseFirst(String str) { public static String upperCaseFirst(String str) {
if (str == null || str.trim().isEmpty()) {
return str;
}
return str.substring(0, 1).toUpperCase() + str.substring(1); return str.substring(0, 1).toUpperCase() + str.substring(1);
} }
@ -89,12 +92,41 @@ public class StringUtils {
return result.toString(); 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){ StringBuilder result = new StringBuilder();
return org.apache.commons.lang3.StringUtils.isNotEmpty(str); 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);
} }
} }

View File

@ -164,7 +164,7 @@ public class TableParseUtil {
// 2019-2-22 zhengkai 要在条件中使用复杂的表达式 // 2019-2-22 zhengkai 要在条件中使用复杂的表达式
// 2019-4-29 zhengkai 优化对普通和特殊storage关键字的判断感谢@AhHeadFloating的反馈 // 2019-4-29 zhengkai 优化对普通和特殊storage关键字的判断感谢@AhHeadFloating的反馈
// 2020-10-20 zhengkai 优化对fulltext/index关键字的处理感谢@WEGFan的反馈 // 2020-10-20 zhengkai 优化对fulltext/index关键字的处理感谢@WEGFan的反馈
// 2023-8-27 zhangfei 改用工具方法判断, 且修改变量名(非特殊标识), 方法抽取 // 2023-8-27 L&J 改用工具方法判断, 且修改变量名(非特殊标识), 方法抽取
boolean notSpecialFlag = isNotSpecialColumnLine(columnLine, i); boolean notSpecialFlag = isNotSpecialColumnLine(columnLine, i);
if (notSpecialFlag) { if (notSpecialFlag) {
@ -185,13 +185,11 @@ public class TableParseUtil {
// field Name // field Name
// 2019-09-08 yj 添加是否下划线转换为驼峰的判断 // 2019-09-08 yj 添加是否下划线转换为驼峰的判断
// 2023-8-27 zhangfei 支持原始列名任意命名风格, 不依赖用户是否输入下划线 // 2023-8-27 L&J 支持原始列名任意命名风格, 不依赖用户是否输入下划线
String fieldName = null; String fieldName = null;
if (ParamInfo.NAME_CASE_TYPE.CAMEL_CASE.equals(nameCaseType)) { if (ParamInfo.NAME_CASE_TYPE.CAMEL_CASE.equals(nameCaseType)) {
fieldName = StringUtils.lowerCaseFirst(StringUtils.underlineToCamelCase(columnName)); // 2024-1-27 L&J 适配任意(maybe)原始风格转小写驼峰
if (fieldName.contains("_")) { fieldName = StringUtils.toLowerCamel(columnName);
fieldName = fieldName.replaceAll("_", "");
}
} else if (ParamInfo.NAME_CASE_TYPE.UNDER_SCORE_CASE.equals(nameCaseType)) { } else if (ParamInfo.NAME_CASE_TYPE.UNDER_SCORE_CASE.equals(nameCaseType)) {
fieldName = StringUtils.toUnderline(columnName, false); fieldName = StringUtils.toUnderline(columnName, false);
} else if (ParamInfo.NAME_CASE_TYPE.UPPER_UNDER_SCORE_CASE.equals(nameCaseType)) { } else if (ParamInfo.NAME_CASE_TYPE.UPPER_UNDER_SCORE_CASE.equals(nameCaseType)) {

View File

@ -19,6 +19,8 @@ public class FooTest {
System.out.println(StringUtils.toUnderline("UserName",true)); System.out.println(StringUtils.toUnderline("UserName",true));
System.out.println(StringUtils.toUnderline("user_NameGgg_x-UUU",true)); System.out.println(StringUtils.toUnderline("user_NameGgg_x-UUU",true));
System.out.println(StringUtils.toUnderline("username",true)); System.out.println(StringUtils.toUnderline("username",true));
System.out.println(StringUtils.underlineToCamelCase("CREATE_TIME"));
} }

View File

@ -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(""));
}
}