Mybatis Plus构造查询一周内、一月内、一年内的条件构造器

Mybatis Plus构造查询一周内、一月内、一年内的条件构造器,第1张

Mybatis Plus构造查询一周内、一月内、一年内的条件构造器

话不多说,直接上代码!

构造条件代码

private  LambdaQueryWrapper buildQueryWrapper(NewBigDatabaseDTO dto){
        Integer timeType = dto.getTimeType();
        Date currentDate = new Date();
        LambdaQueryWrapper 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);

可以自己封装一个工具类

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5707110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存