Mybatis-Plus时间范围查询

article/2025/9/21 5:01:57

方式一

通过apply方法,来实现时间范围查询,该方法可用于数据库函数,动态入参的params对应前面applySql内部的{index}部分,这样是不会有sql注入风险的,反之会有!

apply(String applySql, Object... params)
apply(boolean condition, String applySql, Object... params)

参数:

  • condition可以作为条件,假如为true才会拼接该sql
  • applySql作为拼接的sql,可以使用{0}的方式作为参数占位符
  • params参数,可以有多个

使用反例(会有sql注入的风险):

queryWrapper.apply(StrUtil.isNotBlank(serviceItemListDto.getStartTime()),"date_format (create_time,'%Y-%m-%d') >= date_format('" + serviceItemListDto.getEndTime() + "','%Y-%m-%d')").apply(StrUtil.isNotBlank(serviceItemListDto.getEndTime()),"date_format (create_time,'%Y-%m-%d') <= date_format('" + serviceItemListDto.getEndTime() + "','%Y-%m-%d')");

使用正例:

queryWrapper.apply(serviceItemListDto.getStartTime() != null,"date_format (create_time,'%Y-%m-%d') >= date_format ({0},'%Y-%m-%d')", serviceItemListDto.getStartTime()).apply(serviceItemListDto.getEndTime() != null,"date_format (create_time,'%Y-%m-%d') <= date_format ({0},'%Y-%m-%d')", serviceItemListDto.getEndTime());
;

方式二

除了使用apply还可以使用ge(大于等于 >=)和le(小于等于 <=)

LambdaQueryWrapper<ObsConsultationRequest> qw = new LambdaQueryWrapper<>();Optional.ofNullable(request.getStartRequestDatetime()).ifPresent(date -> qw.ge(ObsConsultationRequest::getRequestDatetime, date));Optional.ofNullable(request.getEndRequestDatetime()).ifPresent(date -> qw.le(ObsConsultationRequest::getRequestDatetime, date));

请求方式

Get请求params传参或者Post请求json传参都是可以的

@ApiModelProperty(value = "开始时间")
private String startTime;@ApiModelProperty(value = "结束时间 ")
private String endTime;

在这里插入图片描述

传参类型

可以选择使用String来接参数,也可以使用Date来接参数!Date类型接参数就要和前端固定传参格式,比如前端传的yyyy-MM-dd HH:mm:ss,假如是get的param传参,就需要使用@DateTimeFormat格式化,不使用@DateTimeFormat然后使用Date类型接参数会报错!假如使用的json传参就需要用@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8"),不然同样会异常!

@DateTimeFormatimport org.springframework.format.annotation.DateTimeFormat;spring自带的,不需要引入别的依赖
@JsonFormatcom.fasterxml.jackson.annotation包下,也不需要引入别的依赖

关于这两个注解不太了解的建议看一下这篇文章:
https://blog.csdn.net/weixin_43888891/article/details/126846791

正确传参:

{"endTime": "2022-09-15 20:00:00","startTime": "2022-09-15 00:00:00"
}
public class ServiceItemListDto implements Serializable {@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date startTime;@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date endTime;public Date getStartTime() {return startTime;}public void setStartTime(Date startTime) {this.startTime = startTime;}public Date getEndTime() {return endTime;}public void setEndTime(Date endTime) {this.endTime = endTime;}
}

如果按照年月日查询,而数据库当中存储的又有时分秒,这时候需要格式化一下数据库存储的日期,所以得用第一种方式!精确到时分秒的条件查询,可以使用第二种方式!第二种不需要手写sql呢。


http://chatgpt.dhexx.cn/article/6pwetZqE.shtml

相关文章

elementui DateTimePicker组件 限制时间范围(包含时分秒)

1、基础范围控制&#xff08;只控制日期&#xff0c;不含时分秒&#xff09; <template><el-date-pickertype"datetime"v-model"startDate"value-format"yyyy-MM-dd HH:mm:ss"placeholder"选择开始时间"size"mini"…

MongoDB查询某个时间范围

MongoDB 时间范围查询目前有两种方式&#xff1a; DateISODate MongoDB条件对应关系 (>) 大于 - $gt(<) 小于 - $lt(>) 大于等于 - $gte(< ) 小于等于 - $lte Date方式 例如查询时间段为2023.01.03<日期<2023.01.05可翻译为&#xff1a; "日期字段名&…

移动端时间范围选择

div模块 <div className"choseDate"><div className"range"><input classNamestartTime onClick{()>{this.setState({startVisible:true})}} placeholder"请选择开始日期" value{this.state.startTime} /><DatePickert…

sql查询时间范围数据

mapper.xml >查询一定时间范围 条件:年月日 时分秒 <if test"creatAt ! null and creatAt ! "><![CDATA[and DATE_FORMAT(ride_order.created_at, %Y-%m-%d %h-%m-%s)> DATE_FORMAT(#{creatAt}, %Y-%m-%d %h-%m-%s) ]]></if><if test&qu…

JAVA判断当前时间在时间范围内

我们在日常开发的时候肯定有围绕时间选择的一些功能, 今天给大家分享一个java如何判断当前时间是否在所选择时间范围内的一个小demo public static void main(String[] args) throws ParseException {SimpleDateFormat ft new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss&q…

JavaScript 时间范围

当前时间往前的时间范围&#xff08;六个月之前&#xff09; 效果图 js文件代码片 /*查询日期区间&#xff08;当前时间往前&#xff09; Add By Vivian 2020/12/04 */ //rangeVal:两个日期的间隔符 num&#xff1a;隔多少 timeType&#xff1a;相隔时间类型 function funGet…

JavaScript如何判定一个给定的时间区间在哪些时间段范围内?

作者 | 十方 来源 | https://segmentfault.com/a/1190000041958661 有这样的一个场景&#xff1a;给定一个时间区间&#xff0c;需要判定这个时间区间在哪些时间段范围内. 比如时间段范围如下&#xff1a; [["00:00","01:00"],["01:00","02…

Impala-shell命令参数

文章目录 1. impala-shell外部命令2. impala-shell内部命令 1. impala-shell外部命令 所谓的外部命令指的是不需要进入到impala-shell交互命令行当中即可执行的命令参数。impala-shell后面执行的时候可以带很多参数。你可以在启动 impala-shell 时设置&#xff0c;用于修改命令…

Impala和Hive的关系(详解)

Impala和Hive的关系 Impala是基于Hive的大数据实时分析查询引擎&#xff0c;直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析&#xff0c;实现了Hive的SQL语义的子集&#xff0c;功能还在不断的完善中。 Hive hi…

impala理论篇之三:impala介绍

简介 Impala是Cloudera公司主导开发的新型查询系统&#xff0c;是Google Dremel的开源实现。它提供SQL语义&#xff0c;能够查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义&#xff0c;但是由于Hive底层执行使用的是MapReduce引擎&#xff…

Impala优化

作为铺垫&#xff0c;本文首先对Broadcast Join和Partitioned Join进行简要介绍。 Broadcast Join 顾名思义&#xff0c;Broadcast Join就是广播的方式进行Join。以下图为例&#xff0c;假设Join操作为SELECT A JOIN B ON A.idB.id&#xff0c;Broadcast Join就是将B表&#…

impala与hive的比较以及impala的有缺点

最近读的几篇关于impala的文章&#xff0c;这篇良心不错&#xff1a;https://www.biaodianfu.com/impala.html&#xff08;本文截取部分内容&#xff09; Impala是Cloudera公司主导开发的新型查询系统&#xff0c;它提供SQL语义&#xff0c;能查询存储在Hadoop的HDFS和HBase中的…

impala命令

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 impala 前言一、impala是什么 &#xff1f;二、使用步骤1.数据拼接2.exists()cast()regexp_like()nvl() 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1…

Apache Impala(1):Impala简介

1 Impala 基本介绍 impala 是 cloudera 提供的一款高效率的 sql 查询工具&#xff0c;提供实时的查询效果&#xff0c;官方测试性能比 hive 快 10 到 100 倍&#xff0c;其 sql 查询比 sparkSQL 还要更加快速&#xff0c;号称是当前大数据领域最快的查询 sql 工具&#xff0c…

大数据Impala系列之初识Impala

一、impala 概述 1、什么是Impala&#xff1f; Impala是用于处理存储在Hadoop集群中的大量数据的MPP&#xff08;大规模并行处理&#xff09;SQL查询引擎。 它是一个用C 和Java编写的开源软件。 与其他Hadoop的SQL引擎相比&#xff0c;它提供了高性能和低延迟。 2、为什么选…

Impala 安装部署

文章目录 1. 安装前提2. 下载安装包&#xff0c;依赖包3. 虚拟机新增磁盘 &#xff08;磁盘空间有余则跳过此步骤&#xff09;3.1 关机新增磁盘3.2 开机挂载磁盘 4. 配置本地 yum 源4.1 上传安装包解压4.2 配置本地yum源信息 5. 安装Impala5.1 集群规划5.2 主节点安装5.3 从节点…

Apache Impala : Impala安装部署

Impala Impala安装部署安装前提下载安装包、依赖包虚拟机新增磁盘&#xff08;可选&#xff09;关机新增磁盘开机挂载磁盘 配置本地yum源上传安装包解压配置本地yum源信息 安装Impala集群规划主节点安装从节点安装 修改Hadoop、Hive配置修改hive配置修改hadoop配置复制hadoop、…

Impala的使用

Impala的核心开发语言是sql语句&#xff0c;Impala有shell命令行窗口&#xff0c;以及JDBC等方式来接收sql语句执行&#xff0c; 对于复杂类型分析可以使用C或者Java来编写UDF函数。 Impala的sql语法是高度集成了Apache Hive的sql语法&#xff0c;Impala支持Hive支持的数据类型…

impala shell

目录 一、impala shell内部命令 1.进入impala交互命令行 2.内部命令&#xff08;同sql操作类似&#xff09; 3.退出impala 4.连接到指定的机器impalad上去执行 5.增量刷新 6.全量刷新 7.帮助 8.查看sql语句的执行计划 9.打印出更加详细的执行步骤 10.设置显示级别&am…

Impala的简单入门

一、Impala概述 什么是Impala&#xff1f; Impala是用于处理存储在Hadoop集群中的大量数据的MPP&#xff08;大规模并行处理&#xff09;SQL查询引擎。 它是一个用C 和Java编写的开源软件。 与其他Hadoop的SQL引擎相比&#xff0c;它提供了高性能和低延迟。 换句话说&#x…