实体类字段设置

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("开始时间")
@TableField(exist = false)
private Date startTime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("截止时间")
@TableField(exist = false)
private Date endTime;

或者

@ApiModelProperty("开始时间")
@TableField(exist = false)
private Date startTime;
@ApiModelProperty("截止时间")
@TableField(exist = false)
private Date endTime;

数据库的create_time字段类型为datetime
第一种:
使用框架提供的查询方法

QueryWrapper<Goods> queryWrapper = Condition.getQueryWrapper(goods)
		.ge(Func.isNotEmpty(goods.getStartTime()),"create_time",goods.getStartTime())
			.le(Func.isNotEmpty(goods.getEndTime()),"create_time",goods.getEndTime());
IPage<Goods> pages = goodsService.page(Condition.getPage(query), queryWrapper);

第二种:
适用于自定义的查询方法

<if test="order.startTime != null">
    and o.create_time &gt;= #{order.startTime}
</if>
<if test="order.endTime != null">
    and o.create_time &lt;= #{order.endTime}
</if>

注意:
第三种:startTime 和endTime 为Date类型,不要写成下面,因为大部分字段为String类型,有时候判断是否为空时,复制或者顺手写成下面这样,导致“invalid comparison: java.util.Date and java.lang.String”报错。

 <if test="goods.startTime != null and order.startTime != ''">
     and g.create_time &gt;= #{goods.startTime}
 </if>

lambda方法构造查询方法

QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();
LambdaQueryWrapper<Goods> lambdaQueryWrapper = queryWrapper.lambda().ge(Func.isNotEmpty(goods.getStartTime()),Goods::getCreateTime, goods.getStartTime());
ambdaQueryWrapper = lambdaQueryWrapper.le(Func.isNotEmpty(goods.getEndTime()),Goods::getCreateTime, goods.getEndTime());
IPage<Goods> pages = goodsService.page(Condition.getPage(query), lambdaQueryWrapper);
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐