zoukankan      html  css  js  c++  java
  • mybatis No enum const class org.apache.ibatis.type.JdbcType.Date 坑爹的配置

    转自:https://lihaiming.iteye.com/blog/2248059

    在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}

  • 相关阅读:
    随机数生成程序代码( 伪随机<stdlib.h> )
    C++的学习 (此博客将一直补充更新下去,C++语法方面的内容不开新随笔了, *【语法学习】)
    sdut oj 1510 Contest02-4 Spiral
    POJ 2017 Speed Limit (直叙式的简单模拟 编程题目 动态属性很少,难度小)
    JavaWeb-入门第一课-1.静态web动态web 2.web服务器 3.下载和安装Tomcat-web服务器
    java小知识,驼峰规则
    亚马逊 协同过滤算法 Collaborative filtering
    第一个JSP程序
    物理学步入禅境:缘起性空
    人既然知道努力就可以进步,为什么还是会不努力?
  • 原文地址:https://www.cnblogs.com/sharpest/p/5627143.html
Copyright © 2011-2022 走看看