Mybatis使用时因jdbcType类型大小写书写不规范导致的异常

本文解析了MyBatis中因错误使用JDBCType枚举导致的异常问题,并提供了正确的数据库类型与Java类型映射关系及解决方案。
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>

 

转载于:https://www.cnblogs.com/sm-myworks/p/6122903.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值