首页 > 数据库 >MyBatis处理SQL字段类型date与datetime

MyBatis处理SQL字段类型date与datetime

时间:2023-08-15 13:11:27浏览次数:42  
标签:DATE java MM jdbcType 00 datetime Date SQL date

1、MyBatis中jdbcType简介

MyBatis处理日期有两种的jdbcType,如下所示:

(1)jdbcType=DATE
(2)jdbcType=TIMESTAMP

注意:此时的DATE指的是java.sql.Date,不是java.util.Date,要注意两者的区别。java.util.Date通常情况下用它获取当前时间,java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分。

2、MySQL数据库常用日期类型

  • (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']

3、Java编程中的时间用法:

Java中有两个Date类,一个是java.util.Date,通常情况下用它获取当前时间,另一个是java.sql.Date,是针对SQL语句使用的,它只包含日期而没有时间部分。

备注:我们常用的是java.util.Date,不必考虑java.sql.Date的情况,只要明白它仅仅用于mybatis框架的jdbcType=DATE即可。

4、不要画蛇添足

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

但是,当我们手动指定jdbcType=DATE的时候,MyBatis会自动截取掉时间,只保留日期。如果MySQL的日期字段类型是datetime或者timestamp一定不要这么写,否则属于画蛇添足,自讨没趣。

总之,在连接mysql数据库的时候,当jdbcType="DATE"类型时,返回的时间只有年月日(yyyy-MM-dd)的,当jdbcType="TIMESTAMP"的时候,返回的时间是年月日和时分秒(yyyy-MM-dd HH:mm:ss)。

从网上找了一个例子,请参考一下,以绑定时间和解绑时间为例:

(1)当绑定时间的jdbcType="DATE",解绑时间的为jdbcType="TIMESTAMP",xml文件设置如下:

 

(2)最终查询到的数据类型是DATE的数据只有年月日(yyyy-MM-dd),而TIMESTAMP的年月日和时分秒都有(yyyy-MM-dd HH:mm:ss),如下所示:

 

(3)当两个时间都设为TIMESTAMP的时候,xml文件设置如下:

 

(4)两个时间数据都展示位年月日和时分秒(yyyy-MM-dd HH:mm:ss),结果如下:

 

 

标签:DATE,java,MM,jdbcType,00,datetime,Date,SQL,date
From: https://www.cnblogs.com/lyf906522290/p/17631058.html

相关文章

  • MySQL存储过程
    1.什么是存储过程是一组为了完成特定功能的sql语句集合经编译后保存在数据库中通过指定存储过程的名字并给出参数的值可带参数,也可返回结果可包含数据操纵语句、变量、逻辑控制语句等使数据库引擎更加灵活和强大2.使用存储过程的目的提高性能:存储过程将一组sql语句封装在一个单元中......
  • burpsuite靶场----SQL注入5----非oracle数据库注入出敏感数据
    burpsuite靶场----SQL注入5----非oracle数据库注入出敏感数据靶场地址https://portswigger.net/web-security/sql-injection/examining-the-database/lab-listing-database-contents-non-oracle避坑1.发现不能用%23作为注释符'unionselect'a','b'%23会报错2.发现不能......
  • iTOP-RK3588开发板单独编译Android固件-打包update.img
    在ubootkernelandroid都编译完成的情况下,才可以打包update.img,所以一般在完整编译的时候用。输入以下命令:./build.sh-u打包完成会在rockdev/Image-rk3588_s目录下生成update.img镜像。更多内容:B站搜索迅为RK3588开发板......
  • PostgreSQL大版本升级(pg_upgrade)
    方案概述使用pg_upgrade进行PostgreSQL大版本的升级实施步骤一、创建测试数据1.1.创建测试用户postgres=#createdatabasetest;CREATEDATABASEpostgres=#CREATEUSERcgWITHPASSWORD'123456';CREATEROLEpostgres=#GRANTALLPRIVILEGESONDATABASEtestTOcg;GRANT......
  • SQL-三张表关联查询(INNER JOIN)
    使用场景】:现有A\B\C三张表,现在要查询并展示A表和C表中的某些字段,但是A、C两表没有相同字段,无法关联,此时有B表恰好有两个字段,一个字段和A表一个字段相同,一个字段和C表一个字段相同,我们称B表为“中间表”,因此通过B表把A、C表关联起来方法一(推荐):SELECTA1,A2,C1,C2--展示A......
  • 使用Logstash同步Mysql到Easysearch
    从Mysql同步数据到ES有多种方案,这次我们使用ELK技术栈中的Logstash来将数据从Mysql同步到Easysearch。方案前提Mysql表记录必须有主键,比如id字段。通过该字段,可将Easysearch索引数据与Mysql表数据形成一对一映射关系,支持修改。Mysql表记录必须有时间字段,......
  • MySQL 执行计划详解
    1.EXPLAIN详解本文基于MySQL8.0编写,理论支持MySQL5.0及更高版本。2.EXPLAIN使用2.1explain分析SQL的执行计划{EXPLAIN|DESCRIBE|DESC}tbl_name[col_name|wild]{EXPLAIN|DESCRIBE|DESC}[explain_type]{explainable_stmt|FORCONNECTIONconne......
  • Nacos2 + Mysql8 作为数据源的建表语句
    在MySQL中创建nacos用户,MySQL创建名为Nacos的Schema,并授权nacos用户可以访问。语句如下:mysql>createuser'nacos'@'%'identifiedby'password';mysql>createschemanacos;mysql>grantALLonnacos.*to'nacos'@'%';或者直接新建一个n......
  • 使用Logstash同步Mysql到Easysearch
    从Mysql同步数据到ES有多种方案,这次我们使用ELK技术栈中的Logstash来将数据从Mysql同步到Easysearch。方案前提Mysql表记录必须有主键,比如id字段。通过该字段,可将Easysearch索引数据与Mysql表数据形成一对一映射关系,支持修改。Mysql表记录必须有时间字段,以支持......
  • burpsuite靶场----SQL注入1----where注入
    burpsuite靶场----SQL注入1----where注入靶场链接https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data推荐burpsuite插件xiasql插件https://github.com/smxiazi/xia_sql正式开始1.先随便点个商品的viewdetails2.在productid处可能存在数字......