0
点赞
收藏
分享

微信扫一扫

MyBatisPlus3.x中使用条件构造器查询某一天的记录数时的日期格式化注意


场景

前端传过来时间,比如是‘2019-05-09’

后台使用条件构造器查询数据库中某一天的记录数。

因为涉及到时间格式的问题,如果直接用时间字段是否相等来判断则不行。所以这里使用MyBatisPlus的条件构造器的apply来拼接sql语句。

官方声明:

拼接 sql
注意事项:

该方法可用于数据库函数 动态入参的params对应前面applySql内部的{index}部分.这样是不会有sql注入风险的,反之会有!

例: apply("id = 1")--->id = 1
例: apply("date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'")--->date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'")
例: apply("date_format(dateColumn,'%Y-%m-%d') = {0}", "2008-08-08")--->date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'")

实现

官方示例是mysql数据库应该这样写:

QueryWrapper<BusLogisticsOrder> BusLogisticsOrderQueryWrapper =new QueryWrapper<BusLogisticsOrder>();
BusLogisticsOrderQueryWrapper.eq("deleted_flag","0");
BusLogisticsOrderQueryWrapper.apply("date_format(gmt_creat,'%Y-%m-%d') = '"+createTime+"'");

但是如果是sqlserver数据库的话是识别不出来date_format内置函数的。

应该这样用:

QueryWrapper<BusLogisticsOrder> BusLogisticsOrderQueryWrapper =new QueryWrapper<BusLogisticsOrder>();
BusLogisticsOrderQueryWrapper.eq("deleted_flag","0");
BusLogisticsOrderQueryWrapper.apply("CONVERT(varchar(100), gmt_creat, 23)= '"+createTime+"'");

 


 

举报

相关推荐

0 条评论