Mybatis Plus构造查询一周内、一月内、一年内的条件构造器
程序员文章站
2022-05-24 14:35:15
...
话不多说,直接上代码!
构造条件代码
private <T extends BaseEntity> LambdaQueryWrapper<T> buildQueryWrapper(NewBigDataBaseDTO dto){
Integer timeType = dto.getTimeType();
Date currentDate = new Date();
LambdaQueryWrapper<T> lqw = Wrappers.lambdaQuery();
lqw.eq(T::getHasDelete, 0);
lqw.eq(T::getHasStatus, 0);
lqw.ge(timeType == NewBigDataTimeTypeEnum.ONE_WEEK.getCode(), T::getAddTime, DateUtil.offsetWeek(currentDate, -1));
lqw.ge(timeType == NewBigDataTimeTypeEnum.ONE_MONTH.getCode(), T::getAddTime, DateUtil.offsetMonth(currentDate, -1));
lqw.ge(timeType == NewBigDataTimeTypeEnum.THREE_MONTH.getCode(), T::getAddTime, DateUtil.offsetMonth(currentDate, -3));
lqw.ge(timeType == NewBigDataTimeTypeEnum.ONE_YEAR.getCode(), T::getAddTime, DateUtil.offsetMonth(currentDate, -12));
lqw.ge(timeType == NewBigDataTimeTypeEnum.CUSTOMIZE.getCode(), T::getAddTime, dto.getStartTime());
lqw.le(timeType == NewBigDataTimeTypeEnum.CUSTOMIZE.getCode(), T::getAddTime, dto.getEndTime());
return lqw;
}
其中使用到了
Hutool
的DateUtil
工具
不想用可以使用Java中的Calendar
类,文末放了使用参考。
NewBigDataBaseDTO
@Data
public class NewBigDataBaseDTO {
/**
* 时间区间类别
*/
@NotNull(message = "时间区间类别timeType不能为空")
@VerifyEnum(enumClass = NewBigDataTimeTypeEnum.class, keyColumn = "code")
private Integer timeType;
/**
* 选择自定义时必填:开始时间
*/
@OtherAffect(column = "timeType", columnValue = "6", message = "timeType=6时, startTime必填")
private Date startTime;
/**
* 选择自定义时必填:结束时间
*/
@OtherAffect(column = "timeType", columnValue = "6", message = "timeType=6时, endTime必填")
private Date endTime;
NewBigDataTimeTypeEnum枚举
public enum NewBigDataTimeTypeEnum {
/**
* 近一周
*/
ONE_WEEK(1, "近一周"),
/**
* 近一个月
*/
ONE_MONTH(2, "近一个月"),
/**
* 近三个月
*/
THREE_MONTH(3, "近三个月"),
/**
* 近一年
*/
ONE_YEAR(4, "近一年"),
/**
* 所有
*/
ALL(5, "所有"),
/**
* 自定义
*/
CUSTOMIZE(6, "自定义")
;
private final int code;
private final String name;
NewBigDataTimeTypeEnum(int code, String info) {
this.code = code;
this.name = info;
}
public static String getValue(int code) {
NewBigDataTimeTypeEnum[] enums = values();
for (NewBigDataTimeTypeEnum item : enums) {
if (item.code == code) {
return item.getName();
}
}
return null;
}
public int getCode() {
return code;
}
public String getName() {
return name;
}
}
Calendar使用参考
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
//过去七天
c.setTime(new Date());
c.add(Calendar.DATE, - 7);
Date d = c.getTime();
String day = format.format(d);
System.out.println("过去七天:"+day);
//过去一月
c.setTime(new Date());
c.add(Calendar.MONTH, -1);
Date m = c.getTime();
String mon = format.format(m);
System.out.println("过去一个月:"+mon);
//过去三个月
c.setTime(new Date());
c.add(Calendar.MONTH, -3);
Date m3 = c.getTime();
String mon3 = format.format(m3);
System.out.println("过去三个月:"+mon3);
//过去一年
c.setTime(new Date());
c.add(Calendar.YEAR, -1);
Date y = c.getTime();
String year = format.format(y);
System.out.println("过去一年:"+year);
可以自己封装一个工具类
上一篇: Servlet实现文件下载
下一篇: PHP上傳實例