Skip to content

Commit c4b7aea

Browse files
author
LE FAUCHEUR Brieuc
committed
Handle numbers underscore separation when mapping camelCase containing a number to snake_case
1 parent b9ac2cc commit c4b7aea

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcUtils.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -523,8 +523,9 @@ public static String convertPropertyNameToUnderscoreName(@Nullable String name)
523523
char c = name.charAt(i);
524524
if (Character.isUpperCase(c)) {
525525
result.append('_').append(Character.toLowerCase(c));
526-
}
527-
else {
526+
} else if (Character.isDigit(c) && !Character.isDigit(name.charAt(i - 1))) {
527+
result.append('_').append(c);
528+
} else {
528529
result.append(c);
529530
}
530531
}

spring-jdbc/src/test/java/org/springframework/jdbc/support/JdbcUtilsTests.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,11 @@ void convertUnderscoreNameToPropertyName() {
5858
assertThat(JdbcUtils.convertUnderscoreNameToPropertyName("some_name_with_1_digit")).isEqualTo("someNameWith1Digit");
5959
}
6060

61+
@Test
62+
void convertPropertyNameToUnderscoreName() {
63+
assertThat(JdbcUtils.convertPropertyNameToUnderscoreName("AName")).isEqualTo("a_name");
64+
assertThat(JdbcUtils.convertPropertyNameToUnderscoreName("someoneElsesName")).isEqualTo("someone_elses_name");
65+
assertThat(JdbcUtils.convertPropertyNameToUnderscoreName("someNameWith1Digit")).isEqualTo("some_name_with_1_digit");
66+
assertThat(JdbcUtils.convertPropertyNameToUnderscoreName("someNameWith12Number")).isEqualTo("some_name_with_12_number");
67+
}
6168
}

0 commit comments

Comments
 (0)