mybatis的使用技巧6——mybatis如何使用自定义时间范围查询

10 篇文章 0 订阅
3 篇文章 0 订阅

在实际项目开发中,自定义时间范围查询是常见操作,写法多样。

但是需要注意的是在执行sql查询时,要避免数据格式转换带来的效率问题。

如需按照不同时间周期做数据的分组查询统计,例如年季度月周等,请点击这里查看详情。

1.需要自定义查询如下区间的数据:

2.前段Get请求参数如下:

3.通过@DateTimeFormat注解可以将前段传递的时间字符自动转换成后端属性的Date数据类型

当然也可以通过时间格式化工具来处理时间样式,后端对应的属性写法如下:

要了解和学习时间格式化@DateTimeFormat和@JsonFormat注解请参考这里

注意:@TableField该注解用在非数据库字段,要在sql执行时做标记

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(exist = false)
    private Date staTime;

    
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(exist = false)
    private Date endTime;

4.对应的mapper文件的xml写法依据参数的不同,写法各异(截图只展示关键部分):

  • 如果时间区间参数是Date类型的:
<if test="staTime != null and endTime != null ">
    and srfjsi.quota_time between #{staTime} and #{endTime}
</if>
  • 如果时间区间参数是String类型的:
<if test="staTime != null and endTime != null ">
    and DATE_FORMAT(srfjsi.quota_time,'%Y-%m-%d %H:%i:%s') BETWEEN #{staTime} AND #{endTime}
</if>
  • 如果不使用between关键字查询,时间区间参数是String类型,也可以使用大于和小于
<if test="staTime != null and staTime != ''"> 
    and DATE_FORMAT(srfjsi.quota_time,'%Y-%m-%d %H:%i:%s') &lt; #{staTime}
</if>
<if test="endTime != null and endTime != ''"> 
    and DATE_FORMAT(srfjsi.quota_time,'%Y-%m-%d %H:%i:%s') &gt; #{endTime}
</if>

需要注意的点:

由于xml规范不可以直接使用五个保留字符,“  < > & ” ’  ”,

因此在mybaits的xml中,大于或者小于要按照如下规则进行编写。
> 要写成 &gt;
< 要写成 &lt;
>= 要写成 &gt;=
<= 要写成 &lt;=

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值