HOME> 伊涅斯塔世界杯> MyBatis 所有的 jdbcType类型

MyBatis 所有的 jdbcType类型

2025-11-02 11:46:34

MyBatis处理MySQL字段类型date与datetime

1) DATETIME

显示格式:yyyy-MM-dd HH:mm:ss

时间范围:[ '1000-01-01 00:00:00'到'9999-12-31 23:59:59']

2) DATE

显示格式:yyyy-MM-dd

时间范围:['1000-01-01'到'9999-12-31']

3) TIMESTAMP

显示格式:yyyy-MM-dd HH:mm:ss

时间范围:[ '1970-01-01 00:00:00'到'2037-12-31 23:59:59']

一、 MyBatis处理日期有两种的jdbcType:

1、jdbcType=DATE

2、jdbcType=TIMESTAMP

二、JAVA中只有一种日期类型 DateTime

当我们使用java.util.Date作为实体的日期类型时(JAVA没有DateTime这个类,Date类能够同时表示日期和时间),java.util.Date实际上是能够表示MySQL的三种字段类型:

1、date

2、datetime

3、timestamp

三、MyBatis处理方式

而实际将java.util.Date当做参数传递给Mapper的时候

1、假如我们不指定jdbcType,那么这个日期会自动转化会MySQL的timestamp,例子如下:

2、指定jdbcType=TIMESTAMP结果同上。

3、指定jdbcType=DATE,那么MyBatis会将传入参数截取为2018-07-24(Date)

四、总结

使用java.util.Date作为参数传递给Mapper时,不管MySQL的日期字段类型是date、datetime或者timestamp中的哪一种,MyBatis都能够自动做出类型转换,可以直接使用 =、>、<、>=、<=符号来进行筛选。

唯一的不同点是指定jdbcType=DATE的时候,MyBatis会自动截取掉时间,如果MySQL的日期字段类型是datetime或者timestamp一定不要这么写。

总之不手动指定参数的jdbcType必然没有问题

MyBatis 常用jdbcType数据类型

1 MyBatis 通过包含的jdbcType类型

BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED

TINYINT REAL VARCHAR BINARY BLOB NVARCHAR

SMALLINT DOUBLE LONGVARCHAR VARBINARY CLOB NCHAR

INTEGER NUMERIC DATE LONGVARBINARY BOOLEAN NCLOB

BIGINT DECIMAL TIME NULL CURSOR

2 Mybatis中javaType和jdbcType对应和CRUD例子

3 Mybatis中javaType和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 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]

4 oracle数据类型和对应的java类型

用mybatis generator生成代码后,执行查询语句时,oracle里的Date类型字段只精确到年月日,后面时分秒都为零。

jdbcType="DATE"时候,存入到数据库中的字段只有年月日!

后来发现是jdbcType问题,改成 jdbcType=“TIMESTAMP” 就可以。(原先默认生成时是jdbcType=“DATE”)

SQL数据类型JDBC类型代码标准的Java类型Oracle扩展的Java类型-1.0标准的JDBC类型:--CHARjava.sql.Types.CHARjava.lang.Stringoracle.sql.CHARVARCHAR2java.sql.Types.VARCHARjava.lang.Stringoracle.sql.CHARLONGjava.sql.Types.LONGVARCHARjava.lang.Stringoracle.sql.CHARNUMBERjava.sql.Types.NUMERICjava.math.BigDecimaloracle.sql.NUMBERNUMBERjava.sql.Types.DECIMALjava.math.BigDecimaloracle.sql.NUMBERNUMBERjava.sql.Types.BITbooleanoracle.sql.NUMBERNUMBERjava.sql.Types.TINYINTbyteoracle.sql.NUMBERNUMBERjava.sql.Types.SMALLINTshortoracle.sql.NUMBERNUMBERjava.sql.Types.INTEGERintoracle.sql.NUMBERNUMBERjava.sql.Types.BIGINTlongoracle.sql.NUMBERNUMBERjava.sql.Types.REALfloatoracle.sql.NUMBERNUMBERjava.sql.Types.FLOATdoubleoracle.sql.NUMBERNUMBERjava.sql.Types.DOUBLEdoubleoracle.sql.NUMBERRAWjava.sql.Types.BINARYbyte[]oracle.sql.RAWRAWjava.sql.Types.VARBINARYbyte[]oracle.sql.RAWLONGRAWjava.sql.Types.LONGVARBINARYbyte[]oracle.sql.RAWDATEjava.sql.Types.DATEjava.sql.Dateoracle.sql.DATEDATEjava.sql.Types.TIMEjava.sql.Timeoracle.sql.DATETIMESTAMPjava.sql.Types.TIMESTAMPjaval.sql.Timestamporacle.sql.TIMESTAMP-2.0标准的JDBC类型:-BLOBjava.sql.Types.BLOBjava.sql.Bloboracle.sql.BLOBCLOBjava.sql.Types.CLOBjava.sql.Cloboracle.sql.CLOB用户定义的对象java.sql.Types.STRUCTjava.sql.Structoracle.sql.STRUCT用户定义的参考java.sql.Types.REFjava.sql.Reforacle.sql.REF用户定义的集合java.sql.Types.ARRAYjava.sql.Arrayoracle.sql.ARRAY-Oracle扩展:--BFILEoracle.jdbc.OracleTypes.BFILEN/Aoracle.sql.BFILEROWIDoracle.jdbc.OracleTypes.ROWIDN/Aoracle.sql.ROWIDREF CURSORoracle.jdbc.OracleTypes.CURSORjava.sql.ResultSetoracle.jdbc.OracleResultSetTIMESTAMPoracle.jdbc.OracleTypes.TIMESTAMPjava.sql.Timestamporacle.sql.TIMESTAMPTIMESTAMP WITH TIME ZONEoracle.jdbc.OracleTypes.TIMESTAMPTZjava.sql.Timestamporacle.sql.TIMESTAMPTZTIMESTAMP WITH LOCAL TIME ZONEoracle.jdbc.OracleTypes.TIMESTAMPLTZjava.sql.Timestamporacle.sql.TIMESTAMPLTZ

ArcGIS技巧(一)画一条特别直的线要素

重要信号:多地房价上涨

最新发表 newmodule
友情链接 newmodule