No enum constant org.apache.ibatis.type.JdbcType.date
2014-06-14 19:37
721 查看
本文转自:http://www.blogjava.net/hello-yun/archive/2013/11/26/406862.html
在ibatis中不需要关注这些参数 而转到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>
更坑爹的在后面,上面insert时的时候用#{endTime,jdbcType=DATE},可以将时间插入成功,且可以精确到时分秒
但如果在update语句中也这样使用,那你得到的只会有日期,这够坑爹的了吧 ,尼玛 比起ibatis方便之处差远了
要想在update语句中 将时间格式化成时分秒 不得不再加一个类型 如下面:
startTime = #{startTime,javaType=DATE, jdbcType=VARCHAR}
在ibatis中不需要关注这些参数 而转到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}
相关文章推荐
- No enum constant org.apache.ibatis.type.JdbcType.Integer
- Caused by: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.inte
- Mybatis异常-java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.NUMBE
- MyBatis 问题:No enum constant org.apache.ibatis.type.JdbcType.NUMBER
- Mybatis异常-java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.N...
- Mybatis异常--java.lang.IllegalArgumentException: NO ENUM const class org.apache.ibatis.type.JdbcType.int
- mybatis No enum const class org.apache.ibatis.type.JdbcType.Integer
- hbase 数据export/import (No enum constant org.apache.hadoop.mapreduce.JobCounter.MB_MILLIS_MAPS)
- hbase 数据export/import (No enum constant org.apache.hadoop.mapreduce.JobCounter.MB_MILLIS_MAPS)
- Caused by: org.apache.ibatis.type.TypeException: JDBC requires that the JdbcType must be specified f
- 上海赛区-org.apache.ibatis.type.TypeException: JDBC requires that the JdbcType must be specified for all nullable parameters.
- mybatis 报错: Caused by: org.apache.ibatis.type.TypeException: JDBC requires that the Jdbc
- tomcat 配置ssl/https 证书问题(一)- No enum constant org.apache.tomcat.util.net.SSLHostConfigCertificate.Typ
- 异常org.apache.ibatis.executor.ExecutorException: There was no TypeHandler found for parameter..
- mybatis异常:nested exception is org.apache.ibatis.builder.BuilderException: Error resolving JdbcType
- java.lang.IllegalArgumentException: No enum constant org.apache.ws.commons.schema.XmlSchemaForm.
- org.apache.ibatis.type.TypeException: Error setting null for parameter #1 with JdbcType OTHER
- org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 解决方法
- java.lang.ClassNoFoundException:org.apache.derby.jdbc.ClientDriver
- org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 搞定!