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>
相關文章
相關標籤/搜索