本次项目换用了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”