1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.type;
17
18 import java.sql.CallableStatement;
19 import java.sql.PreparedStatement;
20 import java.sql.ResultSet;
21 import java.sql.SQLException;
22 import java.sql.Timestamp;
23 import java.time.Instant;
24
25
26
27
28
29 public class InstantTypeHandler extends BaseTypeHandler<Instant> {
30
31 @Override
32 public void setNonNullParameter(PreparedStatement ps, int i, Instant parameter, JdbcType jdbcType) throws SQLException {
33 ps.setTimestamp(i, Timestamp.from(parameter));
34 }
35
36 @Override
37 public Instant getNullableResult(ResultSet rs, String columnName) throws SQLException {
38 Timestamp timestamp = rs.getTimestamp(columnName);
39 return getInstant(timestamp);
40 }
41
42 @Override
43 public Instant getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
44 Timestamp timestamp = rs.getTimestamp(columnIndex);
45 return getInstant(timestamp);
46 }
47
48 @Override
49 public Instant getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
50 Timestamp timestamp = cs.getTimestamp(columnIndex);
51 return getInstant(timestamp);
52 }
53
54 private static Instant getInstant(Timestamp timestamp) {
55 if (timestamp != null) {
56 return timestamp.toInstant();
57 }
58 return null;
59 }
60 }