MybatisPlus操作时间区间做查询条件,可能大家大多用的 ge()  le()方法,但是,这只能对于MySql,Oracle数据库时间是需要to_date('date','fmt')函数的,所以,用MybatisPlus操作Oracle时,直接用le()或ge()会导致一直爆sql异常,对此正确的写法应该是:

 
QueryWrapper<ReportOrder> wrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(query.getDeliveryDateStart())) {
            wrapper.apply("DELIVERY_DATE >= TO_DATE({0},'yyyy-MM-dd')", query.getDeliveryDateStart());
        }
        if (StringUtils.isNotBlank(query.getDeliveryDateEnd())) {
            wrapper.apply("DELIVERY_DATE <= TO_DATE({0},'yyyy-MM-dd')", query.getDeliveryDateEnd());
        }
        if (StringUtils.isNotBlank(query.getOrderDateStart())) {
            wrapper.apply("ORDER_DATE >= TO_DATE({0},'yyyy-MM-dd')", query.getOrderDateStart());
        }
        if (StringUtils.isNotBlank(query.getOrderDateEnd())) {
            wrapper.apply("ORDER_DATE <= TO_DATE({0},'yyyy-MM-dd')", query.getOrderDateEnd());
        }

希望大家注意!!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐