1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package examples.simple;
17
18 import java.sql.CallableStatement;
19 import java.sql.PreparedStatement;
20 import java.sql.ResultSet;
21 import java.sql.SQLException;
22
23 import org.apache.ibatis.type.JdbcType;
24 import org.apache.ibatis.type.TypeHandler;
25 import org.jspecify.annotations.Nullable;
26
27 public class LastNameTypeHandler implements TypeHandler<LastName> {
28
29 @Override
30 public void setParameter(PreparedStatement ps, int i, @Nullable LastName parameter, JdbcType jdbcType) throws SQLException {
31 if (parameter == null) {
32 ps.setNull(i, jdbcType.TYPE_CODE);
33 } else {
34 ps.setString(i, parameter.name());
35 }
36 }
37
38 @Override
39 public LastName getResult(ResultSet rs, String columnName) throws SQLException {
40 return toLastName(rs.getString(columnName));
41 }
42
43 @Override
44 public LastName getResult(ResultSet rs, int columnIndex) throws SQLException {
45 return toLastName(rs.getString(columnIndex));
46 }
47
48 @Override
49 public LastName getResult(CallableStatement cs, int columnIndex) throws SQLException {
50 return toLastName(cs.getString(columnIndex));
51 }
52
53 private @Nullable LastName toLastName(@Nullable String s) {
54 return s == null ? null : new LastName(s);
55 }
56 }