开篇
本次项目换用了Oracle数据库
<resultMap id="BaseResultMap" type="cn.hlyd.yikang.xyj.domain.DrugRecord" > <id column="ID" property="id" jdbcType="VARCHAR" /> <result column="TS" property="ts" jdbcType="DATE" /> <result column="USER_ID" property="userId" jdbcType="VARCHAR" /> <result column="DRUG_ID" property="drugId" jdbcType="VARCHAR" /> <result column="RECORD_DATE" property="recordDate" jdbcType="DATE" /> <result column="DR" property="dr" jdbcType="DECIMAL" /> </resultMap>
但是在插入数据的时候 jdbcType="DATE"会造成数据时间精度丢失。
由于jdbcType="DATE",insert, update这个字段的时候,时分秒(HH:mm:ss) 丢失,应该将DATE改为TIMESTAMP
解决方法:
在mybatis-gen.xml 中,修改table属性
<table tableName="DRUG_RECORD" domainObjectName="DrugRecord"> <columnOverride column="RECORD_DATE" jdbcType="TIMESTAMP"/> </table>
重新生成Mapper.xml之后即可
- 对于mybatis操作Date/Time/DateTime,总结如下:
- 将pojo的属性类型设置为java.sql.Date(或java.sql.Time, java.sql.Timestamp),此时会严格遵循这三种类型的语义。但此方法因存在前文中提到的性能问题,在JDK1.6以前的JDK版本中能少使用就少使用。
- 如果你想在pojo中使用java.util.Date, 则要注意:
- 完整的日期时间,要确保jdbcType为空,或为DATE,TIME以外的值
- 只需要时间,要指定jdbcType=”TIME”
- 只需要日期,要指定jdbcType=”DATE”