您的位置:

Mybatis JdbcType数据类型详解

一、概述

Mybatis是一款优秀的ORM框架,其中,JdbcType是Mybatis中定义的一个枚举类型,用来表示Java对象与数据库之间的数据类型映射关系。Mybatis支持的JdbcType类型,通过JDBC规范中的java.sql.Types枚举类型进行定义。

二、用法

在使用Mybatis进行数据库操作时,JdbcType枚举类型主要用于两个地方,一是在映射文件中指定Java对象属性与数据库字段的数据类型映射关系,例如:


<result column="id" property="id" jdbcType="INTEGER" />

上述代码中,通过jdbcType属性指定了id属性的数据类型为INTEGER类型。除了result节点中的jdbcType属性外,在insert、update、select等节点也可以通过jdbcType属性指定Java对象属性与数据库字段的数据类型映射关系。

第二个用途是在PreparedStatement设置占位符值时指定占位符的数据类型,例如:


ps.setObject(1, obj, JdbcType.VARCHAR.TYPE_CODE);

上述代码中,通过JdbcType.VARCHAR.TYPE_CODE传递数据类型给PreparedStatement对象,指定占位符值的数据类型为VARCHAR类型。

三、枚举类型

Mybatis支持的JdbcType枚举类型包括:BIT、TINYINT、SMALLINT、INTEGER、BIGINT、FLOAT、REAL、DOUBLE、NUMERIC、DECIMAL、CHAR、VARCHAR、LONGVARCHAR、DATE、TIME、TIMESTAMP、BINARY、VARBINARY、LONGVARBINARY、NULL、OTHER、JAVA_OBJECT、DISTINCT、STRUCT、ARRAY、BLOB、CLOB、REF、DATALINK。各枚举类型的含义如下:

  • BIT:布尔型
  • TINYINT:8位带符号整数型
  • SMALLINT:16位带符号整数型
  • INTEGER:32位带符号整数型
  • BIGINT:64位带符号整数型
  • FLOAT:单精度浮点数型
  • REAL:单精度浮点数型
  • DOUBLE:双精度浮点数型
  • NUMERIC:精确数值型
  • DECIMAL:精确数值型
  • CHAR:字符型
  • VARCHAR:可变长度字符串型
  • LONGVARCHAR:长字符串型
  • DATE:日期型
  • TIME:时间型
  • TIMESTAMP:时间戳型
  • BINARY:固定长度二进制数据类型
  • VARBINARY:可变长度二进制数据类型
  • LONGVARBINARY:长二进制数据类型
  • NULL:空值
  • OTHER:其他数据类型
  • JAVA_OBJECT:Java对象
  • DISTINCT:独立类型
  • STRUCT:结构化数据类型
  • ARRAY:数组类型
  • BLOB:二进制数据类型
  • CLOB:长文本类型
  • REF:指向其他表的链接类型
  • DATALINK:链接类型

四、常用示例

下面给出一些常见的Mybatis JdbcType使用示例:

1、字符串类型:


<result column="name" property="name" jdbcType="VARCHAR" />


ps.setString(1, "Hello World");

2、整数类型:


<result column="age" property="age" jdbcType="INTEGER" />


ps.setInt(1, 20);

3、小数类型:


<result column="money" property="money" jdbcType="NUMERIC" />


ps.setBigDecimal(1, new BigDecimal(100.00));

4、日期类型:


<result column="create_date" property="createDate" jdbcType="DATE" />


ps.setDate(1, new java.sql.Date(new java.util.Date().getTime()));

五、总结

JdbcType枚举类型是Mybatis中用来表示Java对象与数据库之间的数据类型映射关系的一种方式。在Mybatis中,通过该枚举类型可以指定Java对象属性与数据库字段的数据类型映射关系,或在PreparedStatement设置占位符值时指定占位符的数据类型。本文介绍了JdbcType枚举类型的相关知识点,并给出了常见的使用示例。