当前位置: 首页 > 知识库问答 >
问题:

mybatis中java中用什么类型和mysql中的datetime类型比较大小?

邵旺
2024-03-01

mybatis中java中用什么类型和mysql中的datetime类型比较大小?

我目前用的是java中的string和mysql中的datatime比较类似这种

SELECT x.* FROM my.`user` x where time BETWEEN '2024-02-28 22:35:59' and '2024-02-28 22:36:58'

目前没发现问题,不知道是否完全正确?

共有2个答案

况经纬
2024-03-01

看你mybatis的xml里parameterType是什么,是java.util.Date的话就传Date,是java.lang.String的话就传String,两种应该都可以,只是要注意像‘2024-02-28 22:35:59’这种时间字符串的格式不要出错

孟昆
2024-03-01

在 MyBatis 中,当你需要在 Java 代码中与 MySQL 的 DATETIME 类型进行比较时,你应该使用 java.util.Date 类型。这是因为 java.util.Date 对象可以表示任何时间点,包括年、月、日、小时、分钟和秒,这与 MySQL 的 DATETIME 类型是兼容的。

在你的例子中,使用字符串来与 DATETIME 进行比较可能会引发问题,因为字符串的比较是按字典顺序进行的,而不是按时间顺序。例如,字符串 '2024-02-28 22:35:59' 会被认为是在 '2024-02-28 22:36:58' 之前,因为在字典顺序中 '22:35:59' 在 '22:36:58' 之前。

因此,你应该使用 java.util.Date 或其子类(如 java.sql.Datejava.sql.Timestamp)来与 MySQL 的 DATETIME 类型进行比较。下面是一个示例查询:

SELECT x.* FROM my.user x WHERE x.time BETWEEN ? AND ?

在 MyBatis 的 Java 代码中,你可以这样传递参数:

Date startDate = new Date(System.currentTimeMillis() - TimeUnit.MILLISECONDS.convert(1, TimeUnit.HOURS));Date endDate = new Date(System.currentTimeMillis());// 在 MyBatis 的查询中sqlSession.selectList("com.example.MyMapper.selectByTimeRange", startDate, endDate);

在这个例子中,startDateendDatejava.util.Date 对象,它们分别表示一个小时之前和现在的时间。然后,这些日期被传递给 MyBatis 的查询,MyBatis 将自动将这些日期转换为 MySQL 可以理解的格式。

 类似资料:
  • 问题内容: 我想比较Java中的类类型。 我以为我可以这样做: 我想比较一下是否传递给函数的obj是从MyObject_1扩展而来的。但这是行不通的。似乎getClass()方法和.class提供了不同类型的信息。 如何比较两个类类型,而不必创建另一个伪对象来比较类类型? 问题答案: 试试这个: 由于继承,这对接口也有效: 有关instanceof的更多信息,请访问:http : //mindpr

  • 本文向大家介绍Java中long类型与Long类型的区别和大小比较详解,包括了Java中long类型与Long类型的区别和大小比较详解的使用技巧和注意事项,需要的朋友参考一下 前言 最近在学习java,接触到了long类型,发现网上这方面的资料较乱,所以决定总结一下,在Java中我们经常要做一些判断,而对于判断的话,用的最多的便是“>”、“==”、“<”的比较,这里我们进行一个Long类型数据和l

  • 如何将java中的LocalDateTime类型和mysql中的datetime类型相对应?我查了一下,貌似需要先将LocalDateTime转成TimeStamp,为什么不是用Date类型,因为很多方法已经弃用,而且线程不安全。或者说有没有更好的处理日期时间的方法呢? 我想知道具体如何将mysql中的datetime类型和java的数据类型相对应起来

  • 本文向大家介绍Java中值类型和引用类型的比较与问题解决,包括了Java中值类型和引用类型的比较与问题解决的使用技巧和注意事项,需要的朋友参考一下 一、问题描述 前几天因为一个需求出现了Bug。说高级点也挺高级,说白点也很简单。其实也就是一个很简单的Java基础入门时候的值类型和引用类型的区别。只是开发的时候由于自己的问题,导致小问题的出现。还好突然想起来以前看过一篇对于该问题讲解的博客,才能快速

  • 问题内容: 在Java中,我编写了一个Binary Search Tree类,该类使用递归添加节点。现在,我想使用泛型对其进行概括,以便我可以了解更多有关它们的信息。 我添加节点的功能在以下类中 主类具有以下代码来开始工作。我正在使用字符串,但是数据类型可能是一些复杂的类型。 我开始使用Comparable接口,但是如何编写CompareTo()函数?我不知道T是什么类型的?我得到的错误是“运算符

  • 问题内容: 我想确定Java中的某些内容:如果我有一个Character,Integer或Long以及类似的东西,我应该使用equals还是==足够? 我知道使用字符串不能保证每个唯一字符串只有一个实例,但是我不确定其他盒装类型。 我的直觉是使用equals,但我想确保自己没有浪费性能。 问题答案: 编辑:规范为装箱转换提供了 一些 保证。从5.1.7节开始: 如果装箱的值p为true,false