Skip to content

Commit 963a8a5

Browse files
committed
JDBC 4.2 for LocalTime, LocalDate & LocalDateTime
The follows other recent commits for OffsetDateTime & ZonedDateTime to defer to the driver’s JDBC 4.2 support for JSR 310 objects.
1 parent 4dfea24 commit 963a8a5

File tree

6 files changed

+37
-77
lines changed

6 files changed

+37
-77
lines changed
Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* Copyright 2009-2018 the original author or authors.
2+
* Copyright 2009-2019 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -19,7 +19,6 @@
1919
import java.sql.PreparedStatement;
2020
import java.sql.ResultSet;
2121
import java.sql.SQLException;
22-
import java.sql.Timestamp;
2322
import java.time.LocalDateTime;
2423

2524
/**
@@ -31,31 +30,21 @@ public class LocalDateTimeTypeHandler extends BaseTypeHandler<LocalDateTime> {
3130
@Override
3231
public void setNonNullParameter(PreparedStatement ps, int i, LocalDateTime parameter, JdbcType jdbcType)
3332
throws SQLException {
34-
ps.setTimestamp(i, Timestamp.valueOf(parameter));
33+
ps.setObject(i, parameter);
3534
}
3635

3736
@Override
3837
public LocalDateTime getNullableResult(ResultSet rs, String columnName) throws SQLException {
39-
Timestamp timestamp = rs.getTimestamp(columnName);
40-
return getLocalDateTime(timestamp);
38+
return rs.getObject(columnName, LocalDateTime.class);
4139
}
4240

4341
@Override
4442
public LocalDateTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
45-
Timestamp timestamp = rs.getTimestamp(columnIndex);
46-
return getLocalDateTime(timestamp);
43+
return rs.getObject(columnIndex, LocalDateTime.class);
4744
}
4845

4946
@Override
5047
public LocalDateTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
51-
Timestamp timestamp = cs.getTimestamp(columnIndex);
52-
return getLocalDateTime(timestamp);
53-
}
54-
55-
private static LocalDateTime getLocalDateTime(Timestamp timestamp) {
56-
if (timestamp != null) {
57-
return timestamp.toLocalDateTime();
58-
}
59-
return null;
48+
return cs.getObject(columnIndex, LocalDateTime.class);
6049
}
6150
}
Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* Copyright 2009-2018 the original author or authors.
2+
* Copyright 2009-2019 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
1616
package org.apache.ibatis.type;
1717

1818
import java.sql.CallableStatement;
19-
import java.sql.Date;
2019
import java.sql.PreparedStatement;
2120
import java.sql.ResultSet;
2221
import java.sql.SQLException;
@@ -31,31 +30,21 @@ public class LocalDateTypeHandler extends BaseTypeHandler<LocalDate> {
3130
@Override
3231
public void setNonNullParameter(PreparedStatement ps, int i, LocalDate parameter, JdbcType jdbcType)
3332
throws SQLException {
34-
ps.setDate(i, Date.valueOf(parameter));
33+
ps.setObject(i, parameter);
3534
}
3635

3736
@Override
3837
public LocalDate getNullableResult(ResultSet rs, String columnName) throws SQLException {
39-
Date date = rs.getDate(columnName);
40-
return getLocalDate(date);
38+
return rs.getObject(columnName, LocalDate.class);
4139
}
4240

4341
@Override
4442
public LocalDate getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
45-
Date date = rs.getDate(columnIndex);
46-
return getLocalDate(date);
43+
return rs.getObject(columnIndex, LocalDate.class);
4744
}
4845

4946
@Override
5047
public LocalDate getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
51-
Date date = cs.getDate(columnIndex);
52-
return getLocalDate(date);
53-
}
54-
55-
private static LocalDate getLocalDate(Date date) {
56-
if (date != null) {
57-
return date.toLocalDate();
58-
}
59-
return null;
48+
return cs.getObject(columnIndex, LocalDate.class);
6049
}
6150
}
Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* Copyright 2009-2018 the original author or authors.
2+
* Copyright 2009-2019 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -19,7 +19,6 @@
1919
import java.sql.PreparedStatement;
2020
import java.sql.ResultSet;
2121
import java.sql.SQLException;
22-
import java.sql.Time;
2322
import java.time.LocalTime;
2423

2524
/**
@@ -31,31 +30,21 @@ public class LocalTimeTypeHandler extends BaseTypeHandler<LocalTime> {
3130
@Override
3231
public void setNonNullParameter(PreparedStatement ps, int i, LocalTime parameter, JdbcType jdbcType)
3332
throws SQLException {
34-
ps.setTime(i, Time.valueOf(parameter));
33+
ps.setObject(i, parameter);
3534
}
3635

3736
@Override
3837
public LocalTime getNullableResult(ResultSet rs, String columnName) throws SQLException {
39-
Time time = rs.getTime(columnName);
40-
return getLocalTime(time);
38+
return rs.getObject(columnName, LocalTime.class);
4139
}
4240

4341
@Override
4442
public LocalTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
45-
Time time = rs.getTime(columnIndex);
46-
return getLocalTime(time);
43+
return rs.getObject(columnIndex, LocalTime.class);
4744
}
4845

4946
@Override
5047
public LocalTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
51-
Time time = cs.getTime(columnIndex);
52-
return getLocalTime(time);
53-
}
54-
55-
private static LocalTime getLocalTime(Time time) {
56-
if (time != null) {
57-
return time.toLocalTime();
58-
}
59-
return null;
48+
return cs.getObject(columnIndex, LocalTime.class);
6049
}
6150
}

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

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import static org.junit.jupiter.api.Assertions.*;
1919
import static org.mockito.Mockito.*;
2020

21-
import java.sql.Timestamp;
2221
import java.time.LocalDateTime;
2322

2423
import org.junit.jupiter.api.Test;
@@ -27,59 +26,58 @@ class LocalDateTimeTypeHandlerTest extends BaseTypeHandlerTest {
2726

2827
private static final TypeHandler<LocalDateTime> TYPE_HANDLER = new LocalDateTimeTypeHandler();
2928
private static final LocalDateTime LOCAL_DATE_TIME = LocalDateTime.now();
30-
private static final Timestamp TIMESTAMP = Timestamp.valueOf(LOCAL_DATE_TIME);
3129

3230
@Override
3331
@Test
3432
public void shouldSetParameter() throws Exception {
3533
TYPE_HANDLER.setParameter(ps, 1, LOCAL_DATE_TIME, null);
36-
verify(ps).setTimestamp(1, TIMESTAMP);
34+
verify(ps).setObject(1, LOCAL_DATE_TIME);
3735
}
3836

3937
@Override
4038
@Test
4139
public void shouldGetResultFromResultSetByName() throws Exception {
42-
when(rs.getTimestamp("column")).thenReturn(TIMESTAMP);
40+
when(rs.getObject("column", LocalDateTime.class)).thenReturn(LOCAL_DATE_TIME);
4341
assertEquals(LOCAL_DATE_TIME, TYPE_HANDLER.getResult(rs, "column"));
4442
verify(rs, never()).wasNull();
4543
}
4644

4745
@Override
4846
@Test
4947
public void shouldGetResultNullFromResultSetByName() throws Exception {
50-
when(rs.getTimestamp("column")).thenReturn(null);
48+
when(rs.getObject("column", LocalDateTime.class)).thenReturn(null);
5149
assertNull(TYPE_HANDLER.getResult(rs, "column"));
5250
verify(rs, never()).wasNull();
5351
}
5452

5553
@Override
5654
@Test
5755
public void shouldGetResultFromResultSetByPosition() throws Exception {
58-
when(rs.getTimestamp(1)).thenReturn(TIMESTAMP);
56+
when(rs.getObject(1, LocalDateTime.class)).thenReturn(LOCAL_DATE_TIME);
5957
assertEquals(LOCAL_DATE_TIME, TYPE_HANDLER.getResult(rs, 1));
6058
verify(rs, never()).wasNull();
6159
}
6260

6361
@Override
6462
@Test
6563
public void shouldGetResultNullFromResultSetByPosition() throws Exception {
66-
when(rs.getTimestamp(1)).thenReturn(null);
64+
when(rs.getObject(1, LocalDateTime.class)).thenReturn(null);
6765
assertNull(TYPE_HANDLER.getResult(rs, 1));
6866
verify(rs, never()).wasNull();
6967
}
7068

7169
@Override
7270
@Test
7371
public void shouldGetResultFromCallableStatement() throws Exception {
74-
when(cs.getTimestamp(1)).thenReturn(TIMESTAMP);
72+
when(cs.getObject(1, LocalDateTime.class)).thenReturn(LOCAL_DATE_TIME);
7573
assertEquals(LOCAL_DATE_TIME, TYPE_HANDLER.getResult(cs, 1));
7674
verify(cs, never()).wasNull();
7775
}
7876

7977
@Override
8078
@Test
8179
public void shouldGetResultNullFromCallableStatement() throws Exception {
82-
when(cs.getTimestamp(1)).thenReturn(null);
80+
when(cs.getObject(1, LocalDateTime.class)).thenReturn(null);
8381
assertNull(TYPE_HANDLER.getResult(cs, 1));
8482
verify(cs, never()).wasNull();
8583
}

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

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import static org.junit.jupiter.api.Assertions.*;
1919
import static org.mockito.Mockito.*;
2020

21-
import java.sql.Date;
2221
import java.time.LocalDate;
2322

2423
import org.junit.jupiter.api.Test;
@@ -27,59 +26,58 @@ class LocalDateTypeHandlerTest extends BaseTypeHandlerTest {
2726

2827
private static final TypeHandler<LocalDate> TYPE_HANDLER = new LocalDateTypeHandler();
2928
private static final LocalDate LOCAL_DATE = LocalDate.now();
30-
private static final Date DATE = Date.valueOf(LOCAL_DATE);
3129

3230
@Override
3331
@Test
3432
public void shouldSetParameter() throws Exception {
3533
TYPE_HANDLER.setParameter(ps, 1, LOCAL_DATE, null);
36-
verify(ps).setDate(1, DATE);
34+
verify(ps).setObject(1, LOCAL_DATE);
3735
}
3836

3937
@Override
4038
@Test
4139
public void shouldGetResultFromResultSetByName() throws Exception {
42-
when(rs.getDate("column")).thenReturn(DATE);
40+
when(rs.getObject("column", LocalDate.class)).thenReturn(LOCAL_DATE);
4341
assertEquals(LOCAL_DATE, TYPE_HANDLER.getResult(rs, "column"));
4442
verify(rs, never()).wasNull();
4543
}
4644

4745
@Override
4846
@Test
4947
public void shouldGetResultNullFromResultSetByName() throws Exception {
50-
when(rs.getDate("column")).thenReturn(null);
48+
when(rs.getObject("column", LocalDate.class)).thenReturn(null);
5149
assertNull(TYPE_HANDLER.getResult(rs, "column"));
5250
verify(rs, never()).wasNull();
5351
}
5452

5553
@Override
5654
@Test
5755
public void shouldGetResultFromResultSetByPosition() throws Exception {
58-
when(rs.getDate(1)).thenReturn(DATE);
56+
when(rs.getObject(1, LocalDate.class)).thenReturn(LOCAL_DATE);
5957
assertEquals(LOCAL_DATE, TYPE_HANDLER.getResult(rs, 1));
6058
verify(rs, never()).wasNull();
6159
}
6260

6361
@Override
6462
@Test
6563
public void shouldGetResultNullFromResultSetByPosition() throws Exception {
66-
when(rs.getDate(1)).thenReturn(null);
64+
when(rs.getObject(1, LocalDate.class)).thenReturn(null);
6765
assertNull(TYPE_HANDLER.getResult(rs, 1));
6866
verify(rs, never()).wasNull();
6967
}
7068

7169
@Override
7270
@Test
7371
public void shouldGetResultFromCallableStatement() throws Exception {
74-
when(cs.getDate(1)).thenReturn(DATE);
72+
when(cs.getObject(1, LocalDate.class)).thenReturn(LOCAL_DATE);
7573
assertEquals(LOCAL_DATE, TYPE_HANDLER.getResult(cs, 1));
7674
verify(cs, never()).wasNull();
7775
}
7876

7977
@Override
8078
@Test
8179
public void shouldGetResultNullFromCallableStatement() throws Exception {
82-
when(cs.getDate(1)).thenReturn(null);
80+
when(cs.getObject(1, LocalDate.class)).thenReturn(null);
8381
assertNull(TYPE_HANDLER.getResult(cs, 1));
8482
verify(cs, never()).wasNull();
8583
}

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

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,69 +18,66 @@
1818
import static org.junit.jupiter.api.Assertions.*;
1919
import static org.mockito.Mockito.*;
2020

21-
import java.sql.Time;
2221
import java.time.LocalTime;
2322

2423
import org.junit.jupiter.api.Test;
2524

2625
class LocalTimeTypeHandlerTest extends BaseTypeHandlerTest {
2726

2827
private static final TypeHandler<LocalTime> TYPE_HANDLER = new LocalTimeTypeHandler();
29-
// java.sql.Time doesn't contain millis, so set nano to 0
30-
private static final LocalTime LOCAL_TIME = LocalTime.now().withNano(0);
31-
private static final Time TIME = Time.valueOf(LOCAL_TIME);
28+
private static final LocalTime LOCAL_TIME = LocalTime.now();
3229

3330
@Override
3431
@Test
3532
public void shouldSetParameter() throws Exception {
3633
TYPE_HANDLER.setParameter(ps, 1, LOCAL_TIME, null);
37-
verify(ps).setTime(1, TIME);
34+
verify(ps).setObject(1, LOCAL_TIME);
3835
}
3936

4037
@Override
4138
@Test
4239
public void shouldGetResultFromResultSetByName() throws Exception {
43-
when(rs.getTime("column")).thenReturn(TIME);
40+
when(rs.getObject("column", LocalTime.class)).thenReturn(LOCAL_TIME);
4441
assertEquals(LOCAL_TIME, TYPE_HANDLER.getResult(rs, "column"));
4542
verify(rs, never()).wasNull();
4643
}
4744

4845
@Override
4946
@Test
5047
public void shouldGetResultNullFromResultSetByName() throws Exception {
51-
when(rs.getTime("column")).thenReturn(null);
48+
when(rs.getObject("column", LocalTime.class)).thenReturn(null);
5249
assertNull(TYPE_HANDLER.getResult(rs, "column"));
5350
verify(rs, never()).wasNull();
5451
}
5552

5653
@Override
5754
@Test
5855
public void shouldGetResultFromResultSetByPosition() throws Exception {
59-
when(rs.getTime(1)).thenReturn(TIME);
56+
when(rs.getObject(1, LocalTime.class)).thenReturn(LOCAL_TIME);
6057
assertEquals(LOCAL_TIME, TYPE_HANDLER.getResult(rs, 1));
6158
verify(rs, never()).wasNull();
6259
}
6360

6461
@Override
6562
@Test
6663
public void shouldGetResultNullFromResultSetByPosition() throws Exception {
67-
when(rs.getTime(1)).thenReturn(null);
64+
when(rs.getObject(1, LocalTime.class)).thenReturn(null);
6865
assertNull(TYPE_HANDLER.getResult(rs, 1));
6966
verify(rs, never()).wasNull();
7067
}
7168

7269
@Override
7370
@Test
7471
public void shouldGetResultFromCallableStatement() throws Exception {
75-
when(cs.getTime(1)).thenReturn(TIME);
72+
when(cs.getObject(1, LocalTime.class)).thenReturn(LOCAL_TIME);
7673
assertEquals(LOCAL_TIME, TYPE_HANDLER.getResult(cs, 1));
7774
verify(cs, never()).wasNull();
7875
}
7976

8077
@Override
8178
@Test
8279
public void shouldGetResultNullFromCallableStatement() throws Exception {
83-
when(cs.getTime(1)).thenReturn(null);
80+
when(cs.getObject(1, LocalTime.class)).thenReturn(null);
8481
assertNull(TYPE_HANDLER.getResult(cs, 1));
8582
verify(cs, never()).wasNull();
8683
}

0 commit comments

Comments
 (0)