实体类字段设置

@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

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐