当前位置:网站首页>MP进阶操作: 时间操作, sql,querywapper,lambdaQueryWapper(条件构造器)快速筛选 枚举类
MP进阶操作: 时间操作, sql,querywapper,lambdaQueryWapper(条件构造器)快速筛选 枚举类
2022-07-04 22:35:00 【pingzhuyan】
目录
2. sql语句 :TIMESTAMPDIFF()的 方法 使用
查询当前时间的30分钟之前(过期30分钟)和60分钟后(快到期60分钟)
1. 时间筛选的原方法:
获取 开始时间-> 结束时间
一个月, 一年 都需要计算
queryWapper.ge(timeStatus, "update_date", appointEntity.getStartTime())//大于开始时间
.le(timeStatus, "update_date", appointEntity.getEndTime())//小于等于结束时间
2. sql语句 :TIMESTAMPDIFF()的 方法 使用
查询当前时间的30分钟之前(过期30分钟)和60分钟后(快到期60分钟)
select id from 表
where (TIMESTAMPDIFF(MINUTE, #{nowTime}, ap_time) >0 and TIMESTAMPDIFF(MINUTE, #{nowTime}, ap_time) <= 60 )
or
(TIMESTAMPDIFF(MINUTE, ap_time, #{nowTime})>0 and TIMESTAMPDIFF(MINUTE, ap_time, #{nowTime}) <30)
3. 整合条件构造器(时间)
3.1 写一个枚举类(时间)
package com.aisce.common.enums;
public enum DataTimeTypeEnum {
/**
* 近一周
*/
ONE_WEEK(1, "近一周"),
/**
* 近一个月
*/
ONE_MONTH(2, "近一个月"),
/**
* 近三个月
*/
THREE_MONTH(3, "近三个月"),
/**
* 近一年
*/
ONE_YEAR(4, "近一年"),
/**
* 所有
*/
ALL(5, "所有"),
/**
* 自定义
*/
CUSTOMIZE(6, "自定义")
;
private final int code;
private final String name;
DataTimeTypeEnum(int code, String info) {
this.code = code;
this.name = info;
}
public static String getValue(int code) {
DataTimeTypeEnum[] enums = values();
for (DataTimeTypeEnum item : enums) {
if (item.code == code) {
return item.getName();
}
}
return null;
}
public int getCode() {
return code;
}
public String getName() {
return name;
}
}
3.2 写一个类 需要这三个属性
/**
* 时间类型
*/
@TableField(exist = false )
private Integer TimeType ;
/**
* 开始时间
*/
@TableField(exist = false )
private Date startTime;
/**
* 结束时间
*/
@TableField(exist = false )
private Date endTime;
3.3 条件构造器写法
/**
* lambdaQuery 终极写法 时间规划
* @param dto
* @param <T>
* @return
*/
private <T extends AixiBillRecord> LambdaQueryWrapper<T> buildQueryWrapper(DataBaseDTO dto){
Integer timeType = dto.getTimeType();
// Integer timeType = 3;
Date currentDate = new Date();
LambdaQueryWrapper<T> lqw = Wrappers.lambdaQuery();
lqw.ge(timeType == DataTimeTypeEnum.ONE_WEEK.getCode(), T::getCreateTime, DateUtil.offsetWeek(currentDate, -1));
lqw.ge(timeType == DataTimeTypeEnum.ONE_MONTH.getCode(), T::getCreateTime, DateUtil.offsetMonth(currentDate, -1));
lqw.ge(timeType == DataTimeTypeEnum.THREE_MONTH.getCode(), T::getCreateTime, DateUtil.offsetMonth(currentDate, -3));
lqw.ge(timeType == DataTimeTypeEnum.ONE_YEAR.getCode(), T::getCreateTime, DateUtil.offsetMonth(currentDate, -12));
lqw.ge(timeType == DataTimeTypeEnum.CUSTOMIZE.getCode(), T::getCreateTime, dto.getStartTime());
lqw.le(timeType == DataTimeTypeEnum.CUSTOMIZE.getCode(), T::getCreateTime, dto.getEndTime());
return lqw;
}
3.4 代码中使用方式
(可能有更好的使用方式 寻找中)
DataBaseDTO dto = new DataBaseDTO();
dto.setTimeType(1);
LambdaQueryWrapper<*> LambdaQueryWrapper = buildQueryWrapper(dto);
LambdaQueryWrapper.eq(*::getCompanyId,user.getCompanyId());
//先获取全部数据
List<*> RecordList = baseMapper.selectList(LambdaQueryWrapper);
边栏推荐
- Taobao commodity review API interface (item_review get Taobao commodity review API interface), tmall commodity review API interface
- Principle of lazy loading of pictures
- Redis入门完整教程:初识Redis
- Photoshop批量给不同的图片添加不同的编号
- The small program vant tab component solves the problem of too much text and incomplete display
- 小程序vant tab组件解决文字过多显示不全的问题
- 【图论】拓扑排序
- EditPlus--用法--快捷键/配置/背景色/字体大小
- Gnawing down the big bone - sorting (II)
- Redis入门完整教程:慢查询分析
猜你喜欢
Explanation of bitwise operators
Sobel filter
Redis: redis configuration file related configuration and redis persistence
Erik baleog and Olaf, advanced area of misc in the attack and defense world
Lost in the lock world of MySQL
Attack and defense world misc advanced area ditf
EditPlus--用法--快捷键/配置/背景色/字体大小
MYSQL架构——用户权限与管理
Advanced area of attack and defense world misc 3-11
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
随机推荐
Redis getting started complete tutorial: Geo
A complete tutorial for getting started with redis: getting to know redis for the first time
How to send a reliable request before closing the page
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列
Attack and defense world misc advanced area ditf
常用技术指标之一文读懂BOLL布林线指标
MYSQL架构——逻辑架构
[the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
[Lua] Int64 support
微信小程序显示样式知识点总结
共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf
【ODX Studio编辑PDX】-0.3-如何删除/修改Variant变体中继承的(Inherited)元素
Redis: redis configuration file related configuration and redis persistence
小程序vant tab组件解决文字过多显示不全的问题
Unity vscode emmylua configuration error resolution
啃下大骨头——排序(二)
mamp下缺少pcntl扩展的解决办法,Fatal error: Call to undefined function pcntl_signal()
通过Go语言创建CA与签发证书
Redis入门完整教程:发布订阅
【室友用一局王者荣耀的时间学会了用BI报表数据处理】