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