最终效果图(从数据库查询出来):这边是宽度设置的原因,所以有些日期没有显示出来,后面再改改就好了,不碍事。

按时间查询本周:

数据库里面的数据是这样的:

我这边犯了一个错误,导致一步错步步错

和以前一样,我新建一张表的时候,就会新建一个bean,把这张表的字段都加上,这边总共有四个字段

然后,我惯性思维,犯傻了,如下图:

然后我一直以为是dao写错了,没注意到一开始就错了,因为Echarts的数据就两个一个是横向的数据,一个是纵向的数据,所以这样定义,一开始就是错的,bean写错了,dao实现类也写错了

所以,

我改了改bean

dao层:

接口:

实现类:

分享一下查询本周的sql语句:

------查询最近一周日期---------
SELECT TO_CHAR((trunc(sysdate, 'iw')) + ROWNUM - 1, 'yyyy-MM-dd') as time_date FROM DUAL
  CONNECT BY ROWNUM <= 7;

实现类的SQL语句:这边的DECODE函数的功能就相当于JS中的三目运算,(LOG_COUNT==NULL? 0 : LOG_COUNT)

SELECT X.TIME_DATE,DECODE(LOG_COUNT,NULL,0,LOG_COUNT) COUNT FROM 
(SELECT TO_CHAR((TRUNC(SYSDATE,'IW'))+ROWNUM-1,'YYYY-MM-DD') AS TIME_DATE FROM DUAL CONNECT BY ROWNUM <=7 ) X
LEFT JOIN ( SELECT A.D,COUNT(*) LOG_COUNT FROM (SELECT TRUNC(LOG_CTIME,'DD') D FROM TEXT_LOG_INF 
 WHERE LOG_CTIME >= TRUNC(SYSDATE,'D')+1 AND LOG_CTIME < TRUNC(SYSDATE,'D')+8) A GROUP BY A.D ) Y
 ON X.TIME_DATE=TO_CHAR(Y.D,'YYYY-MM-DD');

只要查询出日期和数量,所以bean中只要定义两个字段,dao实现类中也只要查询出两个字段

service层:

接口:

实现类:

Servlet中做业务逻辑处理:

private void queryLogByTime(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");
		Log log=new Log();
		LogService logService=(LogService)ServiceFactory.getServiceImpl(LogService.class.getName());
		List<Log> logList=logService.queryAllLogByTime(log);
		request.setAttribute("logList", logList);
		request.getRequestDispatcher("/admin/log/log_time.jsp").forward(request, response);
	}

 

 

 然后就把按时间查询本周的日志图表(Echarts)的形式显示出来

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐