版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37758497/article/details/86605495
最近做了一个日志功能,当用户访问接口后,会记录哪个接口,返回结果等信息,
记录请求地址,ip,请求方法,参数和请求时间。没有关联到个人。数据表如下:
现在想做一个统计最近七天的访问接口数量,之前想的有些复杂。
首先获取今天的日期,根据日期查询数量,再查询出近七天的数量。后来发现sql可以直接解决,
CURDATE() 函数返回当前的日期。
curdate()直接返回当天
查询最近七天的访问量,sql如下
select a.click_date as 日期,ifnull(b.count,0) as 数量
from (
#查询当天
SELECT curdate() as click_date
union all
#前一天
SELECT date_sub(curdate(), interval 1 day) as click_date
union all
SELECT date_sub(curdate(), interval 2 day) as click_date
union all
SELECT date_sub(curdate(), interval 3 day) as click_date
union all
SELECT date_sub(curdate(), interval 4 day) as click_date
union all
SELECT date_sub(curdate(), interval 5 day) as click_date
union all
SELECT date_sub(curdate(), interval 6 day) as click_date
) a left join (
select date(sendtime) as datetime, count(*) as count
from t_logs
group by date(sendtime)
) b on a.click_date = b.datetime;
查询结果:
后台我使用的是springboot+ssm框架,
扫描二维码关注公众号,回复:
5374815 查看本文章
因为返回多条数据,就返回list。
mybatis sql
我发现返回结果却是为空
解决:当resulttype改为hashmap时,返回为空的问题完美解决。
截图返回的部分数据
至于为什么是hashmap,我也不是特别清楚。大概是这样,
返回值是HashMap类型,可以理解为动态的创建了一个HashMap集合,以键值对的形式保存从数据库里的返回值,map.put("ID",xxx); map.put("NAME",xxx); map.put("COUNT",xxx);
特此记录,供以后参考
----- 笔者水平有限,如有不严谨的地方,请指教必改。