All jdbcType types of MyBatis

MyBatis handles MySQL field types date and datetime

1) DATETIME
Display format: yyyy-MM-dd HH:mm:ss
Time range: [ '1000-01-01 00:00:00' to '9999-12-31 23:59:59']

2) DATE
Display format: yyyy-MM-dd
Time range: ['1000-01-01' to '9999-12-31']

3) TIMESTAMP
Display format: yyyy-MM-dd HH:mm:ss
Time range: [ '1970-01-01 00:00:00' to '2037-12-31 23:59:59']

copy

One, MyBatis has two types of jdbcType for processing dates:

1. jdbcType=DATE 2. jdbcType=TIMESTAMP

Second, there is only one date type in JAVA DateTime

When we use java.util.Date as the date type of the entity (JAVA does not have the DateTime class, the Date class can represent date and time at the same time), java.util.Date can actually represent three field types of mysql:

1. date 2. datetime 3. timestamp

Third, MyBatis processing method

When actually passing java.util.Date as a parameter to Mapper 1. If we do not specify jdbcType, then this date will be automatically converted to MySQL timestamp. The example is as follows: 2. The result of specifying jdbcType=TIMESTAMP is the same as above. 3. Specify jdbcType=DATE, then MyBatis will intercept the incoming parameters as 2018-07-24 (Date)

4. Summary

When using java.util.Date as a parameter to pass to Mapper, MyBatis can automatically perform type conversion regardless of whether the date field type of MySQL is date, datetime or timestamp, and you can directly use =, >, <, > =, <= symbols to filter. The only difference is that when jdbcType=DATE is specified, MyBatis will automatically intercept the time. If the date field type of MySQL is datetime or timestamp, it must not be written in this way. In short, there must be no problem with jdbcType that does not manually specify parameters

MyBatis commonly used jdbcType data type

1 The jdbcType type included by MyBatis

BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED

TINYINT REAL VARCHAR BINARY BLOB NVARCHAR

SMALLINT DOUBLE LONG VARCHAR VARBINARY CLOB NCHAR

INTEGER NUMERIC DATE LONGVARBINARY BOOLEAN NCLOB

BIGINT DECIMAL TIME NULL CURSOR

copy

2 Mybatis javaType and jdbcType correspondence and CRUD example

<resultMap type="java.util.Map" id="resultjcm">
<result property="FLD_NUMBER" column="FLD_NUMBER" javaType="double" jdbcType="NUMERIC"/>
<result property="FLD_VARCHAR" column="FLD_VARCHAR" javaType="string" jdbcType="VARCHAR"/>
<result property="FLD_DATE" column="FLD_DATE" javaType="java.sql.Date" jdbcType="DATE"/>
<result property="FLD_INTEGER" column="FLD_INTEGER" javaType="int" jdbcType="INTEGER"/>
<result property="FLD_DOUBLE" column="FLD_DOUBLE" javaType="double" jdbcType="DOUBLE"/>
<result property="FLD_LONG" column="FLD_LONG" javaType="long" jdbcType="INTEGER"/>
<result property="FLD_CHAR" column="FLD_CHAR" javaType="string" jdbcType="CHAR"/>
<result property="FLD_BLOB" column="FLD_BLOB" javaType="[B" jdbcType="BLOB" />
<result property="FLD_CLOB" column="FLD_CLOB" javaType="string" jdbcType="CLOB"/>
<result property="FLD_FLOAT" column="FLD_FLOAT" javaType="float" jdbcType="FLOAT"/>
<result property="FLD_TIMESTAMP" column="FLD_TIMESTAMP" javaType="java.sql.Timestamp" jdbcType="TIMESTAMP"/>
</resultMap>

copy

3 The correspondence between javaType and jdbcType in Mybatis

JDBC Type Java Type
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMALjava.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[]
DATEjava.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]

copy

4 oracle data type and corresponding java type

After using mybatis generator to generate the code, when the query statement is executed, the Date type field in oracle is only accurate to the year, month and day, and the subsequent hours, minutes and seconds are all zero. When jdbcType=”DATE”, the fields stored in the database are only year, month, and day! Later, it was found that it was a jdbcType problem, just change it to jdbcType=”TIMESTAMP”. (The original default was jdbcType=”DATE”)

SQL data type

JDBC type code

standard Java types

Oracle Extended Java Types

1.0 standard JDBC types:

CHAR

java.sql.Types.CHAR

java.lang.String

oracle.sql.CHAR

VARCHAR2

java.sql.Types.VARCHAR

java.lang.String

oracle.sql.CHAR

long

java.sql.Types.LONGVARCHAR

java.lang.String

oracle.sql.CHAR

NUMBER

java.sql.Types.NUMERIC

java.math.BigDecimal

oracle.sql.NUMBER

NUMBER

java.sql.Types.DECIMAL

java.math.BigDecimal

oracle.sql.NUMBER

NUMBER

java.sql.Types.BIT

boolean

oracle.sql.NUMBER

NUMBER

java.sql.Types.TINYINT

byte

oracle.sql.NUMBER

NUMBER

java.sql.Types.SMALLINT

short

oracle.sql.NUMBER

NUMBER

java.sql.Types.INTEGER

int

oracle.sql.NUMBER

NUMBER

java.sql.Types.BIGINT

long

oracle.sql.NUMBER

NUMBER

java.sql.Types.REAL

float

oracle.sql.NUMBER

NUMBER

java.sql.Types.FLOAT

double

oracle.sql.NUMBER

NUMBER

java.sql.Types.DOUBLE

double

oracle.sql.NUMBER

RAW

java.sql.Types.BINARY

byte[]

oracle.sql.RAW

RAW

java.sql.Types.VARBINARY

byte[]

oracle.sql.RAW

LONGRAW

java.sql.Types.LONGVARBINARY

byte[]

oracle.sql.RAW

DATE

java.sql.Types.DATE

java.sql.Date

oracle.sql.DATE

DATE

java.sql.Types.TIME

java.sql.Time

oracle.sql.DATE

TIMESTAMP

java.sql.Types.TIMESTAMP

javal.sql.Timestamp

oracle.sql.TIMESTAMP

2.0 standard JDBC types:

BLOB

java.sql.Types.BLOB

java.sql.Blob

oracle.sql.BLOB

CLOB

java.sql.Types.CLOB

java.sql.Clob

oracle.sql.CLOB

user-defined object

java.sql.Types.STRUCT

java.sql.Struct

oracle.sql.STRUCT

user defined reference

java.sql.Types.REF

java.sql.Ref

oracle.sql.REF

user defined collection

java.sql.Types.ARRAY

java.sql.Array

oracle.sql.ARRAY

Oracle extension:

BFILE

oracle.jdbc.OracleTypes.BFILE

N/A

oracle.sql.BFILE

ROWID

oracle.jdbc.OracleTypes.ROWID

N/A

oracle.sql.ROWID

REF CURSOR

oracle.jdbc.OracleTypes.CURSOR

java.sql.ResultSet

oracle.jdbc.OracleResultSet

TIMESTAMP

oracle.jdbc.OracleTypes.TIMESTAMP

java.sql.Timestamp

oracle.sql.TIMESTAMP

TIMESTAMP WITH TIME ZONE

oracle.jdbc.OracleTypes.TIMESTAMPTZ

java.sql.Timestamp

oracle.sql.TIMESTAMPTZ

TIMESTAMP WITH LOCAL TIME ZONE

oracle.jdbc.OracleTypes.TIMESTAMPLTZ

java.sql.Timestamp

oracle.sql.TIMESTAMPLTZ

The knowledge points of the article match the official knowledge files, and you can further learn relevant knowledge. Java skill treeHomepageOverview 119858 people are studying systematically