在日常开发中,通常需要对数据按月搜索,这里介绍下如何使用。
列表模板增加时间范围搜索组件
留意,这里选择时间精确到月。
<div class="form-group"> <label class="control-label">${text('发货时间')}:</label> <div class="control-inline"> <#form:input path="shippingDate_gte" readonly="true" maxlength="20" class="form-control laydate width-date" dataFormat="date" data-type="date" data-format="yyyy-MM" data-done="shippingDate_lte.click()"/> - <#form:input path="shippingDate_lte" readonly="true" maxlength="20" class="form-control laydate width-date" dataFormat="date" data-type="date" data-format="yyyy-MM"/> </div> </div>
实体类中增加搜索设置
public Date getShippingDate_gte() { return sqlMap.getWhere().getValue("shipping_date", QueryType.GTE); } public void setShippingDate_gte(Date shippingDate) { sqlMap.getWhere().and("shipping_date", QueryType.GTE, shippingDate); } public Date getShippingDate_lte() { return sqlMap.getWhere().getValue("shipping_date", QueryType.LTE); } public void setShippingDate_lte(Date shippingDate) { sqlMap.getWhere().and("shipping_date", QueryType.LTE, shippingDate); }
控制器中增加时间处理
如果查询时间为空,时间默认为近3个月。否则,开始时间为指定时间的 00:00:00,结束时间为 23:59:59 。
/** * 查询列表数据 */ @RequiresPermissions("product:flowPaymentFreight:view") @RequestMapping(value = "paymentTotalListData") @ResponseBody public List<PaymentTotalList> paymentTotalListData(PaymentTotalList paymentTotalList, HttpServletRequest request, HttpServletResponse response) { // 日历初始化 Calendar calendar = Calendar.getInstance(); // 获取传递的时间参数 Date startDate = paymentTotalList.getShippingDate_gte(); Date endDate = paymentTotalList.getShippingDate_lte(); // 时间为空,取近 3个月 if (startDate == null || endDate == null) { endDate = new Date(); calendar.setTime(endDate); calendar.add(Calendar.MONTH, -3); startDate = calendar.getTime(); } // 计算开始时间 calendar.setTime(startDate); // 设置本月第一天 // calendar.set(Calendar.DAY_OF_MONTH, 1); // 这里是 24 小时制 calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); // 重新设置查询条件 startDate = calendar.getTime(); paymentTotalList.setShippingDate_gte(startDate); // 计算结束时间 calendar.setTime(endDate); // 这里是 24 小时制 calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); // 取本月最后一天 // int lastDayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); // 设置本月最后一天 // calendar.set(Calendar.DAY_OF_MONTH, lastDayOfMonth); // 重新设置查询条件 endDate = calendar.getTime(); paymentTotalList.setShippingDate_lte(endDate); List<PaymentTotalList> page = flowPaymentFreightService.findList(paymentTotalList); return page; }
相关链接: