MyBatis 所有的 jdbcType类型

MyBatis 所有的 jdbcType类型MyBatis处理MySQL字段类型date与datetime1)DATETIME显示格式:yyyy-MM-ddHH:mm:ss时间范围:[‘1000-01-0100:00:00’到’9999-12-3123:59:59’]2)DATE显示格式:yyyy-MM-dd时间范围:[‘1000-01-01’到’9999-12-31’]3)TIMESTAMP显示格式:yyyy-MM-ddHH:mm:ss时间范围:[‘1970-01-0100:00:00’到’2037-12-

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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例子

<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>

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类型:
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标准的JDBC类型:
BLOB java.sql.Types.BLOB java.sql.Blob oracle.sql.BLOB
CLOB java.sql.Types.CLOB java.sql.Clob oracle.sql.CLOB
用户定义的对象 java.sql.Types.STRUCT java.sql.Struct oracle.sql.STRUCT
用户定义的参考 java.sql.Types.REF java.sql.Ref oracle.sql.REF
用户定义的集合 java.sql.Types.ARRAY java.sql.Array oracle.sql.ARRAY
Oracle扩展:
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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179812.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • react 纯函数组件_react类组件

    react 纯函数组件_react类组件纯函数PureFunction定义:一个函数的返回结果只依赖于它的参数,并且在执行的过程中没有副作用,我们就把该函数称作纯函数。特点1.函数的返回结果只依赖于它的参数。letfoo=(a,b)=>a+bfoo(1,2)//=32.函数执行过程里面没有副作用。什么是副作用除了修改外部的变量,一个函数在执行过程中还有很多方式产生外部可观察的变化,比如说调用DOMAPI修改页面,或者你发送了Ajax请求,还有调用window.reload刷新浏览器,

    2025年7月4日
    2
  • 《深入浅出Python机器学习》读书笔记 第二章 基于Python语言的环境配置

    《深入浅出Python机器学习》读书笔记 第二章 基于Python语言的环境配置《深入浅出Python机器学习》读书笔记,第二章基于Python语言的环境配置

    2022年10月10日
    3
  • 解决Unable to connect to Redis server: 192.168.110.1/192.168.110.1:6379[通俗易懂]

    解决Unable to connect to Redis server: 192.168.110.1/192.168.110.1:6379[通俗易懂]出现场景:springboot整合redis,启动项目时出现原因:redis的一系列配置不正确解决方案:首先在window安装redis,找到安装目录下的redis.windows.confredis.windows-service.conf1)修改protected-modeyes改为:protected-modeno2)注释掉#bin127.0.0.13…

    2022年6月5日
    275
  • SpringBoot 使用 @Transactional 注解配置事务[通俗易懂]

    SpringBoot项目中需要配置事务管理,所以在这里系统地整理下关于@Transactional注解相关的知识!1、详细介绍事务管理是应用系统开发中必不可少的一部分。Spring为事务管理提供了丰富的功能支持。Spring事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代…

    2022年4月9日
    93
  • python爬12306并买票_python开发12306抢票

    python爬12306并买票_python开发12306抢票说明文字:1.本项目只是一个练习,熟悉python爬虫技术,没有任何用途2.最后运行的结果有时候会成功,有时候会显示错误界面,如下图所示。因为12306怎么可能允许你一直爬它呢准备工作:项目结构:…

    2025年6月21日
    3
  • (二)Sql Server的基本配置以及使用Navicat连接Sql Server

    (二)Sql Server的基本配置以及使用Navicat连接Sql Server一:sqlserver连接的验证方式分为两种:Windows身份认证:使用windows的用户名密码验证SQLServer身份认证:使用sqlserver的用户名+密码的方式登录()二:sqlserver的环境配置实际生产环境服务器肯定是需要远程连接的,所以我们需要对本机的sqlserver进行一下的基本配置:配置支持tcp连接(否则无法使用连接工具进行远程连接)配置支持SQLServer身份认证(一般情况下都会使用这种验证方式而不是windows验证)配置

    2022年8月30日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号