• JdbcType


    JdbcType介绍
    数据库列字段都是有类型的,不同的数据库有不同的类型。为了表示这些数据类型,Java源码是采用枚举来定义的:

    public enum JDBCType implements SQLType {
    TINYINT(Types.TINYINT),
    SMALLINT(Types.SMALLINT),
    INTEGER(Types.INTEGER)
    }
    枚举变量也是有类型的,也是有值的,正如整数变量是整数类型,也有值大小一样,上述枚举变量值的定义是通过Types来描述刻画的。

    public class Types {
    public final static int TINYINT = -6;
    public final static int SMALLINT = 5;
    public final static int INTEGER = 4;
    }
    MyBatis包含的JdbcType类型,主要有下面这些,大致了解一下即可:
    BIT、FLOAT、CHAR 、TIMESTAMP 、 OTHER 、UNDEFINEDTINYINT 、REAL 、VARCHAR 、BINARY 、BLOB NVARCHAR、SMALLINT 、DOUBLE 、LONGVARCHAR 、VARBINARY 、CLOB、NCHAR、INTEGER、 NUMERIC、DATE 、LONGVARBINARY 、BOOLEAN 、NCLOB、BIGINT 、DECIMAL 、TIME 、NULL、CURSOR

    上述JdbcType类型和Java类型的对应关系,可以参照下面的列表,不过不同数据库的JdbcType多少有些出入,请注意即可。
    JDBC 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 INTEGER
    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
    JdbcType类型的作用
    在Mybatis明文建议在映射字段数据时需要将JdbcType属性加上,这样相对来说是比较安全的。

    <insert id="saveRole">
    insert into role values (
    #{roleId},
    #{name},
    #{remarks},
    #{orderNo},
    #{createBy,jdbcType=VARCHAR},
    #{createDept,jdbcType=VARCHAR},
    #{createTime,jdbcType=DATE},
    #{updateBy,jdbcType=VARCHAR},
    #{updateTime,jdbcType=DATE}
    )
    </insert>
    这样,保证了前四种是不能为空的前提下,而后面几项为空时也不至于程序报错。如果createBy为空,插入的时候mybatis不知道具体转换成什么jdbcType类型,通常会使用一个默认设置,虽然默认配置一般情况下不会出错,但是遇到个别情况还是会有问题的。Mybatis经常出现的:无效的列类型: 1111 错误,就是因为没有设置JdbcType造成的。



    Mybatis中jdbcType和javaType的对应关系


    1 JDBC Type Java Type
    2 CHAR String
    3 VARCHAR String
    4 LONGVARCHAR String
    5 NUMERIC java.math.BigDecimal
    6 DECIMAL java.math.BigDecimal
    7 BIT boolean
    8 BOOLEAN boolean
    9 TINYINT byte
    10 SMALLINT short
    11 INTEGER int
    12 BIGINT long
    13 REAL float
    14 FLOAT double
    15 DOUBLE double
    16 BINARY byte[]
    17 VARBINARY byte[]
    18 LONGVARBINARY byte[]
    19 DATE java.sql.Date
    20 TIME java.sql.Time
    21 TIMESTAMP java.sql.Timestamp
    22 CLOB Clob
    23 BLOB Blob
    24 ARRAY Array
    25 DISTINCT mapping of underlying type
    26 STRUCT Struct
    27 REF Ref
    28 DATALINK java.net.URL[color=red][/color]


    Mybatis JdbcType与Oracle、MySql数据类型对应列表


    Mybatis JdbcType Oracle MySql
    JdbcType ARRAY
    JdbcType BIGINT BIGINT
    JdbcType BINARY
    JdbcType BIT BIT
    JdbcType BLOB BLOB BLOB
    JdbcType BOOLEAN
    JdbcType CHAR CHAR CHAR
    JdbcType CLOB CLOB CLOB
    JdbcType CURSOR
    JdbcType DATE DATE DATE
    JdbcType DECIMAL DECIMAL DECIMAL
    JdbcType DOUBLE NUMBER DOUBLE
    JdbcType FLOAT FLOAT FLOAT
    JdbcType INTEGER INTEGER INTEGER
    JdbcType LONGVARBINARY
    JdbcType LONGVARCHAR LONG VARCHAR
    JdbcType NCHAR NCHAR
    JdbcType NCLOB NCLOB
    JdbcType NULL
    JdbcType NUMERIC NUMERIC/NUMBER NUMERIC/
    JdbcType NVARCHAR
    JdbcType OTHER
    JdbcType REAL REAL REAL
    JdbcType SMALLINT SMALLINT SMALLINT
    JdbcType STRUCT
    JdbcType TIME TIME
    JdbcType TIMESTAMP TIMESTAMP TIMESTAMP/DATETIME
    JdbcType TINYINT TINYINT
    JdbcType UNDEFINED
    JdbcType VARBINARY
    JdbcType VARCHAR VARCHAR VARCHAR

    ————————————————
    版权声明:本文为CSDN博主「超域」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_43727372/article/details/100513553

  • 相关阅读:
    CLOSE_WAIT过大,致使tomcat停掉
    nginx安装
    前端知识点及面试题总结
    博客第一次
    二叉树的深度-python
    数字在排序数组中出现的次数-python
    两个链表的第一个公共节点-python
    自动生成接口自动化测试报告
    python实现四舍五入
    使用python的configparser操作.ini配置文件
  • 原文地址:https://www.cnblogs.com/javalinux/p/16298112.html
Copyright © 2020-2023  润新知