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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM