DateTimeTypeHandler
mysql-timestimp-------model-DateTime(jodatime)
1 public class DataTimeTypeHandler extends BaseTypeHandler<DateTime> { 2 @Override 3 public void setNonNullParameter(PreparedStatement ps, int i, DateTime parameter, JdbcType jdbcType) throws SQLException { 4 ps.setTimestamp(i, new Timestamp(parameter.getMillis())); 5 } 6 7 @Override 8 public DateTime getNullableResult(ResultSet rs, String columnName) throws SQLException { 9 Timestamp timestamp = rs.getTimestamp(columnName); 10 if (timestamp == null) { 11 return DateTime.now(); 12 } 13 return new DateTime(timestamp); 14 } 15 16 @Override 17 public DateTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException { 18 Timestamp timestamp = rs.getTimestamp(columnIndex); 19 if (timestamp == null) { 20 return DateTime.now(); 21 } 22 return new DateTime(timestamp); 23 } 24 25 @Override 26 public DateTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { 27 Timestamp timestamp = cs.getTimestamp(columnIndex); 28 if (timestamp == null) { 29 return DateTime.now(); 30 } 31 return new DateTime(timestamp); 32 } 33 }
<typeHandlers> handler="com.qunar.fresh.typehandler.DataTimeTypeHandler" javaType="org.joda.time.DateTime"/> </typeHandlers>
这样在插入或是查找的时候不会出现null的情况。
自己写typeHandler,其他类型转mysql字段类型也一样,在这里不一一细说。