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.Date;
20 import java.sql.PreparedStatement;
21 import java.sql.ResultSet;
22 import java.sql.SQLException;
23 import java.time.LocalDate;
24 import java.time.chrono.JapaneseDate;
25
26
27
28
29
30
31
32
33 public class JapaneseDateTypeHandler extends BaseTypeHandler<JapaneseDate> {
34
35 @Override
36 public void setNonNullParameter(PreparedStatement ps, int i, JapaneseDate parameter, JdbcType jdbcType)
37 throws SQLException {
38 ps.setDate(i, Date.valueOf(LocalDate.ofEpochDay(parameter.toEpochDay())));
39 }
40
41 @Override
42 public JapaneseDate getNullableResult(ResultSet rs, String columnName) throws SQLException {
43 Date date = rs.getDate(columnName);
44 return getJapaneseDate(date);
45 }
46
47 @Override
48 public JapaneseDate getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
49 Date date = rs.getDate(columnIndex);
50 return getJapaneseDate(date);
51 }
52
53 @Override
54 public JapaneseDate getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
55 Date date = cs.getDate(columnIndex);
56 return getJapaneseDate(date);
57 }
58
59 private static JapaneseDate getJapaneseDate(Date date) {
60 if (date != null) {
61 return JapaneseDate.from(date.toLocalDate());
62 }
63 return null;
64 }
65
66 }