栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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);

可以自己封装一个工具类

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/708567.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号