zoukankan      html  css  js  c++  java
  • Mybatis使用时因jdbcType类型大小写书写不规范导致的异常

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.Intege
    
    No enum constant:提示说mybatis没有Integer该类型的枚举常量,导致该异常抛出
    
       数据库类型和Java类型之间的关系:               
        DBC Type                Java Type  
        CHAR                     String  
        VARCHAR                  String  
        LONGVARCHAR              String  
        NUMERIC                  java.math.BigDecimal  
        DECIMAL                  java.math.BigDecimal  
        BIT                      boolean
        BOOLEAN                  boolean  
        TINYINT                  byte  
        SMALLINT                 short  
        INTEGER                  int  
        BIGINT                   long  
        REAL                     float  
        FLOAT                    double  
        DOUBLE                   double  
        BINARY                   byte[]  
        VARBINARY                byte[]  
        LONGVARBINARY            byte[]  
        DATE                     java.sql.Date  
        TIME                     java.sql.Time  
        TIMESTAMP                java.sql.Timestamp  
        CLOB                     Clob  
        BLOB                     Blob  
        ARRAY                    Array  
        DISTINCT                 mapping of underlying type  
        STRUCT                   Struct  
        REF                       Ref  
        DATALINK            java.net.URL[color=red][/color] 
    
    而MyBatis所支持的jdbcType类型有一下几种:
    BITFLOATCHARTIMESTAMP、OTHER、 UNDEFINED
    TINYINTREALVARCHARBINARY、BLOB、 NVARCHAR
    SMALLINTDOUBLE、LONGVARCHAR、VARBINARY、CLOB、NCHAR
    INTEGER、NUMERIC、DATE、 LONGVARBINARY、BOOLEAN 、NCLOB
    BIGINTDECIMAL、TIME、NULLCURSOR
    
    注意:在书写jabcType类型的时候,是有严格的大小写的区分的,否则会抛出上面的异常,即mybatis所定义的类型常量枚举不存在
    场景重现:<!-- 批量新增 -->
        <insert id="insertAddBatchBillid" parameterType="map">
            insert into tbc_specbill_target
            (billid,sms_type,state,updatetime,staff,mark_type,desc_info,attachproname,attachcompany,tag_count)
            values
            <foreach collection="param" item="i" separator=",">
                (#{i.col0,jdbcType=VARCHAR}, #{i.col1,jdbcType=VARCHAR},
                0, SYSDATE(),#{userName,jdbcType=VARCHAR},#{i.col2,jdbcType=VARCHAR},#{i.col3,jdbcType=VARCHAR},#{i.attachproname,jdbcType=VARCHAR},
                #{i.attachcompany,#{i.col4,jdbcType=Integer})
              //工作中偶遇的情景,导致异常产生,将jdbcType=Integer修改为jdbcType=INTEGER 后运行正常
            </foreach>                                                  
        </insert>
  • 相关阅读:
    Jenkins pipeline 流水线部署 并自定义 buildName 和 buildDescription 显示信息
    Jenkins中插件 pipeline 中声明式流水线的语法
    Linux 发送https POST请求sample ===Slack 频道中发送消息通知
    Jenkins pipline
    jenkins pipeline中获取shell命令的输出
    Chrome浏览器对标签进行整理和分组
    MacBook 对rar后缀的文件进行加压
    Macbook中Docker一栏的应用程序图标不见了,怎么找出来?
    [Pytest]运行指定的case
    软考 高项 重点知识点
  • 原文地址:https://www.cnblogs.com/sm-myworks/p/6122903.html
Copyright © 2011-2022 走看看