当前位置:网站首页>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);
边栏推荐
- 【ODX Studio编辑PDX】-0.2-如何对比Compare两个PDX/ODX文件
- EditPlus--用法--快捷键/配置/背景色/字体大小
- Hit the core in the advanced area of misc in the attack and defense world
- Editplus-- usage -- shortcut key / configuration / background color / font size
- Redis getting started complete tutorial: Geo
- Create Ca and issue certificate through go language
- Attack and defense world misc advanced area can_ has_ stdio?
- A complete tutorial for getting started with redis: getting to know redis for the first time
- Redis的持久化机制
- Insert sort, select sort, bubble sort
猜你喜欢
MySQL Architecture - user rights and management
One of the commonly used technical indicators, reading boll Bollinger line indicators
Redis introduction complete tutorial: Collection details
Attack and defense world misc advanced grace-50
sobel过滤器
Duplicate ADMAS part name
Redis入门完整教程:发布订阅
Business is too busy. Is there really no reason to have time for automation?
A complete tutorial for getting started with redis: Pipeline
The small program vant tab component solves the problem of too much text and incomplete display
随机推荐
攻防世界 MISC 进阶区 3-11
A complete tutorial for getting started with redis: understanding and using APIs
Redis introduction complete tutorial: detailed explanation of ordered collection
On-off and on-off of quality system construction
A complete tutorial for getting started with redis: redis usage scenarios
Redis入門完整教程:Pipeline
Hit the core in the advanced area of misc in the attack and defense world
9 - class
Unity-VScode-Emmylua配置报错解决
Redis introduction complete tutorial: client communication protocol
Sword finger offer 68 - ii The nearest common ancestor of binary tree
UML图记忆技巧
攻防世界 misc 进阶区 2017_Dating_in_Singapore
[Jianzhi offer] 6-10 questions
String类中的常用方法
Redis入门完整教程:客户端通信协议
【剑指offer】1-5题
Redis入门完整教程:HyperLogLog
Notepad++--编辑的技巧
Attack and defense world misc advanced zone 2017_ Dating_ in_ Singapore