Skip to content

Commit b454d47

Browse files
authored
Merge pull request #2368 from mrsun002/mrsun002-fixTheCharacterTypeHandler
CharacterTypeHandler#getNullableResult() throws StringIndexOutOfBoundsException
2 parents 4ec46f3 + 71bc47e commit b454d47

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

src/main/java/org/apache/ibatis/type/CharacterTypeHandler.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void setNonNullParameter(PreparedStatement ps, int i, Character parameter
3333
@Override
3434
public Character getNullableResult(ResultSet rs, String columnName) throws SQLException {
3535
String columnValue = rs.getString(columnName);
36-
if (columnValue != null) {
36+
if (columnValue != null && !columnValue.isEmpty()) {
3737
return columnValue.charAt(0);
3838
} else {
3939
return null;
@@ -43,7 +43,7 @@ public Character getNullableResult(ResultSet rs, String columnName) throws SQLEx
4343
@Override
4444
public Character getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
4545
String columnValue = rs.getString(columnIndex);
46-
if (columnValue != null) {
46+
if (columnValue != null && !columnValue.isEmpty()) {
4747
return columnValue.charAt(0);
4848
} else {
4949
return null;
@@ -53,7 +53,7 @@ public Character getNullableResult(ResultSet rs, int columnIndex) throws SQLExce
5353
@Override
5454
public Character getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
5555
String columnValue = cs.getString(columnIndex);
56-
if (columnValue != null) {
56+
if (columnValue != null && !columnValue.isEmpty()) {
5757
return columnValue.charAt(0);
5858
} else {
5959
return null;

src/test/java/org/apache/ibatis/type/CharacterTypeHandlerTest.java

+20
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,24 @@ public void shouldGetResultNullFromCallableStatement() throws Exception {
8888
verify(cs, never()).wasNull();
8989
}
9090

91+
@Test
92+
void testEmptyStringGetStringByName() throws Exception {
93+
when(rs.getString("column")).thenReturn("");
94+
assertNull(TYPE_HANDLER.getResult(rs, "column"));
95+
verify(rs, never()).wasNull();
96+
}
97+
98+
@Test
99+
void testEmptyStringGetStringByIndex() throws Exception {
100+
when(rs.getString(1)).thenReturn("");
101+
assertNull(TYPE_HANDLER.getResult(rs, 1));
102+
verify(rs, never()).wasNull();
103+
}
104+
105+
@Test
106+
void testEmptyStringCallableStatementGetStringByIndex() throws Exception {
107+
when(cs.getString(1)).thenReturn("");
108+
assertNull(TYPE_HANDLER.getResult(cs, 1));
109+
verify(cs, never()).wasNull();
110+
}
91111
}

0 commit comments

Comments
 (0)