Mybatis mapper层No enum constant org.apache.ibatis.type.JdbcType.date

来源:互联网 发布:python http 断点续传 编辑:程序博客网 时间:2024/06/05 23:41

转载自 http://www.blogjava.net/hello-yun/archive/2013/11/26/406862.html

在ibatis中,mapper层不需要关注这些参数而转到mybatis后如果字段值为空 必须设置jdbcType,如:

insert into testTable   (ID,   NAME,   DESCRIPTION,   IMAGEURL,   LINKURL,   ISALWAYS,   ISDISPLAYINDEX,   DISPLAYWEIGHT,   STARTTIME,   ENDTIME,   CREATOR,   CREATTIME,   MODIFYTIME)  values   (SEQ_ACTIVITY_TABLE.NEXTVAL,   #{name},   #{desc,jdbcType=VARCHAR},   #{imageUrl,jdbcType=VARCHAR},   #{linkUrl,jdbcType=VARCHAR},   #{isAlways,jdbcType=CHAR},   #{isDisplayIndex,jdbcType=CHAR},   #{displayWeight,jdbcType=VARCHAR},   #{startTime,jdbcType=DATE},   #{endTime,jdbcType=DATE},   #{creator,jdbcType=VARCHAR},   sysdate,   sysdate   ) </insert>

这些设置之多,太烦了,最让人烦的是jdbcType = DATE,类型还必须大写,不能小写
如下面的例子,将DATE 改成 Date 。结果让人很抓狂啊!!!
insert into testTable   (ID,   NAME,   DESCRIPTION,   IMAGEURL,   LINKURL,   ISALWAYS,   ISDISPLAYINDEX,   DISPLAYWEIGHT,   STARTTIME,   ENDTIME,   CREATOR,   CREATTIME,   MODIFYTIME)  values   (SEQ_ACTIVITY_TABLE.NEXTVAL,   #{name},   #{desc,jdbcType=VARCHAR},   #{imageUrl,jdbcType=VARCHAR},   #{linkUrl,jdbcType=VARCHAR},   #{isAlways,jdbcType=CHAR},   #{isDisplayIndex,jdbcType=CHAR},   #{displayWeight,jdbcType=VARCHAR},   #{startTime,jdbcType=Date},   #{endTime,jdbcType=DATE},   #{creator,jdbcType=VARCHAR},   sysdate,   sysdate   ) </insert>
报错提示:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error resolving JdbcType. Cause: java.lang.IllegalArgumentException:No enum const class org.apache.ibatis.type.JdbcType.Date
org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:368)

更坑爹的在后面,上面insert时的时候用#{endTime,jdbcType=DATE},可以将时间插入成功,且可以精确到时分秒
但如果在update语句中也这样使用,那你得到的只会有日期,这够坑爹的了吧 ,尼玛  比起ibatis方便之处差远了
要想在update语句中将时间格式化成时分秒 不得不再加一个类型 如下面:

startTime = #{startTime,javaType=DATE, jdbcType=VARCHAR} 


阅读全文
0 0
原创粉丝点击