当前位置:网站首页>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);
边栏推荐
- Sword finger offer 65 Add without adding, subtracting, multiplying, dividing
- Set up a website with a sense of ceremony, and post it to 1/2 of the public network through the intranet
- A complete tutorial for getting started with redis: transactions and Lua
- Redis: redis configuration file related configuration and redis persistence
- Google collab trample pit
- Redis的持久化机制
- Redis入门完整教程:初识Redis
- A complete tutorial for getting started with redis: hyperloglog
- Explanation of bitwise operators
- The new version judges the code of PC and mobile terminal, the mobile terminal jumps to the mobile terminal, and the PC jumps to the latest valid code of PC terminal
猜你喜欢
攻防世界 MISC 进阶 glance-50
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列
新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码
The overview and definition of clusters can be seen at a glance
Redis入门完整教程:Redis Shell
【剑指offer】1-5题
Redis introduction complete tutorial: List explanation
Talk about Middleware
Lost in the lock world of MySQL
How to send a reliable request before closing the page
随机推荐
A complete tutorial for getting started with redis: Pipeline
[ODX studio edit PDX] - 0.2-how to compare two pdx/odx files of compare
Redis introduction complete tutorial: Collection details
记录:关于Win10系统中Microsoft Edge上的网页如何滚动截屏?
Google Earth engine (GEE) -- take modis/006/mcd19a2 as an example to batch download the daily mean, maximum, minimum, standard deviation, statistical analysis of variance and CSV download of daily AOD
Unity vscode emmylua configuration error resolution
A complete tutorial for getting started with redis: redis shell
MYSQL架构——逻辑架构
Attack and Defense World MISC Advanced Area Erik baleog and Olaf
NFT insider 64: e-commerce giant eBay submitted an NFT related trademark application, and KPMG will invest $30million in Web3 and metauniverse
剑指 Offer 65. 不用加减乘除做加法
Detailed explanation of heap sort code
Taobao commodity review API interface (item_review get Taobao commodity review API interface), tmall commodity review API interface
A complete tutorial for getting started with redis: hyperloglog
Set up a website with a sense of ceremony, and post it to 1/2 of the public network through the intranet
Analog rocker controlled steering gear
Redis入门完整教程:Redis Shell
环境加密技术解析
Editplus-- usage -- shortcut key / configuration / background color / font size
Business is too busy. Is there really no reason to have time for automation?