关于mybatis中的时间段查询

本文分享了在Mybatis中如何处理前端传递的日期时间段查询,涉及日期类型转换、SQL书写技巧,以及LocalDateTime的使用,适合开发者快速解决日期区间查询问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

关于mybatis中的时间段查询

在最近的开发中使用比较频繁的一个点,咱就是说浅浅的记录一下!!
相信大家对于mybatis框架并不陌生,我使用它在开发过程中需要对一个时间段进行查询,前端设置的时间选择器咱就不多说了,咱是一个小后端,先管好眼前的技术。我设置了数据库字段类型为dateTime
在这里插入图片描述

实体类为date类型,接收前端参数的dto也使用的date,那当然在实体类设置date类型,肯定会出现时间误差所以需要加个时间格式化注解设置对应时区。

在这里插入图片描述

那其实准备工作做得差不多了,现在就直入这个问题的最大难点,在xml文件中写对应sql,他其实有三种写法,但是我经常用的是两种,一种between and ,一种 <![CDATA[ >= ]]> 这种写法,between and 不能精确时分秒来筛选,所以后一种用的比较多,废话不多说直接上图:

在这里插入图片描述

至于这里为什么这样写大家百度一下就知道了,其实也就是书写规范的问题至于还有一种写法的话这里就不提了,大家感兴趣可以自己去看看
这里顺带提一下在接收前端参数时可以使用 LocalDateTime这个类型来接收,在jdk8以后增加的一个类型,它是属于java.time.LocalDateTime的,当时我也有使用过它来做这个时间段查询,当然如果你的mybatis使用的版本低于3.4.5的话需要导入一个类型转换的依赖

 <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-typehandlers-jsr310</artifactId>
        <version>1.0.1</version>
    </dependency>

除了接收参数的类型不同,其他其实都差不多,大家感兴趣的自己可以去试试,毕竟使用过它之后的我觉得它挺香的!!!

**

MyBatis查询某个时间段的数据,可以使用动态SQL来实现。通过判断传入的参数是否为空,来决定是否拼接相应的条件语句。 首先,我们需要在Mapper.xml文件中定义一个查询语句。例如: ```xml <select id="selectByTimeRange" parameterType="java.util.Map" resultType="yourResultType"> SELECT * FROM your_table WHERE 1=1 <if test="startTime != null"> AND your_time_column >= #{startTime} </if> <if test="endTime != null"> AND your_time_column <= #{endTime} </if> </select> ``` 在这个查询语句中,我们使用了动态SQL的if标签来判断传入的startTime和endTime是否为空。如果不为空,就拼接相应的条件语句。 然后,在Java代码中,我们可以通过传入一个Map来设置查询参数。例如: ```java Map<String, Object> params = new HashMap<>(); params.put("startTime", yourStartTime); params.put("endTime", yourEndTime); List<YourResultType> result = sqlSession.selectList("yourNamespace.selectByTimeRange", params); ``` 在这里,我们将起始时间和结束时间作为参数放入Map中,然后将Map作为参数传入查询语句中。 通过这种方式,我们就可以根据传入的时间段查询相应的数据了。注意,你需要根据实际的表名、字段名和返回类型进行相应的修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【完美解决】MyBatis中怎么查询某个时间段内的数据](https://blog.youkuaiyun.com/qq_38071008/article/details/100565826)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [关于mybatis中的时间段查询](https://blog.youkuaiyun.com/Coolking00/article/details/125742960)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值