当前位置:网站首页>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);边栏推荐
- NFT insider 64: e-commerce giant eBay submitted an NFT related trademark application, and KPMG will invest $30million in Web3 and metauniverse
- Sword finger offer 68 - ii The nearest common ancestor of binary tree
- Redis的持久化机制
- The difference between Max and greatest in SQL
- Redis getting started complete tutorial: publish and subscribe
- Google Earth engine (GEE) - globfire daily fire data set based on mcd64a1
- 云服务器设置ssh密钥登录
- Analysis of the self increasing and self decreasing of C language function parameters
- Lost in the lock world of MySQL
- Unity修仙手游 | lua动态滑动功能(3种源码具体实现)
猜你喜欢

Complete tutorial for getting started with redis: bitmaps

Redis入门完整教程:GEO

【剑指Offer】6-10题

Redis getting started complete tutorial: publish and subscribe

Redis入门完整教程:哈希说明
![P2181 diagonal and p1030 [noip2001 popularization group] arrange in order](/img/79/36c46421bce08284838f68f11cda29.png)
P2181 diagonal and p1030 [noip2001 popularization group] arrange in order

Unity vscode emmylua configuration error resolution

浅聊一下中间件

Attack and defense world misc master advanced zone 001 normal_ png

Erik baleog and Olaf, advanced area of misc in the attack and defense world
随机推荐
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列
Analysis of environmental encryption technology
Feature scaling normalization
Gnawing down the big bone - sorting (II)
攻防世界 MISC 进阶区 Ditf
Sword finger offer 68 - ii The nearest common ancestor of binary tree
环境加密技术解析
Google Earth engine (GEE) - globfire daily fire data set based on mcd64a1
[ODX studio edit PDX] - 0.2-how to compare two pdx/odx files of compare
浅聊一下中间件
The difference between Max and greatest in SQL
Attack and defense world misc advanced area Hong
mamp下缺少pcntl扩展的解决办法,Fatal error: Call to undefined function pcntl_signal()
Wake up day, how do I step by step towards the road of software testing
Pagoda 7.9.2 pagoda control panel bypasses mobile phone binding authentication bypasses official authentication
Notepad++ -- editing skills
A complete tutorial for getting started with redis: hyperloglog
Is Huatai Securities a nationally recognized securities firm? Is it safe to open an account?
UML图记忆技巧
共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf