webservice接口实施产生的问题
输入精确到年月日时分秒的日期
由于开发过程中需要用到将接受到的精确到年月日时分秒的字符串输入到数据库中,一开始是将pojo类定义为String类型的,然后在对应的mapper中也将对应的类型定义为VARCHAR
在初期因为接口中没有用到输入到时间类型的数据所以也将接口的MAP定义为了MAP<String,String>
结果在输入日期的时候,出现了不能将字符串String类型转换成Date类型的错误
一开始的解决方法是将接受日期的字符串设为Date类型,import的是java.sql.Date,将mapper.xml中的对应字段也做了相应改变
jdbcType="DATE" javaType="java.sql.Date" mode="IN"/>
然后将Map<String,String>类型设置为Map<String,Object>来接收全部类型的对象,这样的结果是:虽然将时间的年月日输入进去了,但时分秒无法输入,具体的错误如下
Can not construct instance of java.util.Date from String value '2020-05-26 14:15:26': not a valid representation (error: Can not parse date "2020-05-26 14:15:26": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))
经查阅资料后得知
,java.sql.Date和java.util.Date
java.sql.Date是只支持日期的,不支持时分秒。而java.util.Date是有时间部分的,在sql操作的时候,
resultSet中getDate()默认的类型是java.sql.Date,所以获取的Date类型是没有时间部分的,
setDate(rs.getTimestamp('time')),使用rs.getTimestamp()能够很好的解决这个问题,然后数据库中字段也要修改为timestamp。
注意实体类中的Date的setDate()一定要是java.util.Date类型。
并且要添加注解
并且给对应接收实体类的pojo添加@JsonFormat注释,pattern格式要与前端一致
接着将mapper.xml下的也进行修改
再次测试,时分秒也成功加入了进去😸