发表于: 2018-03-25 23:38:27

1 453


今天完成的任务

1、完成了折线图接口

A、原型

B、确认需要返回的数据(出参)和筛选条件(入参):

入参包括“毕业院校”、“籍贯”、“学历”、“专业”、“职业”、“年龄”,还有底部的“入学时间下限”、“入学时间上限”,一个8个字段。

出参则是“每一天的日期、日人数、总人数”,所以出参可以认为是每一天数据的集合,一个List。


C、用Navicat保证SQL的正确:

这里只展示最终方案:

select a.day, a.number, (@totalNumber := @totalNumber + a.number) totalNumber from (select UNIX_TIMESTAMP(DATE_FORMAT(FROM_UNIXTIME(u.start_at/1000), '%Y-%m-%d'))*1000 AS dayIFNULL(count(u.id),0) AS number from user u, record r where r.uid = u.id and r.school like '%大学%' and r.major like '%材料%' and r.grade = 7 and CONCAT(r.province,r.city,r.county) like '%柳州市%' and u.oid = 5 and TIMESTAMPDIFF(YEAR,r.born_at,CURRENT_TIMESTAMP()) <= 24 and TIMESTAMPDIFF(YEAR,born_at,CURRENT_TIMESTAMP()) >= 18 and u.identity >=40 and u.identity < 60 and u.start_at > 0 GROUP BY DAY) a JOIN (SELECT @totalNumber := 0) s;


D、用JDBCTemplate编写实现类

需要调用的方法是query方法:

然后来分析一下怎么处理query方法的三个入参.


a)预定义语句

因为8个入参是动态的,所以SQL是要进行拼接的,SQL要用StringBuffer。

另外,因为是使用的JDBCTemplate,动态查询的入参要用'?'进行替代,不能像我们用的工具类那样,直接把入参的名字拼写到SQL中,如

上图还使用了CONCAT()函数,把字符串模糊搜索的格式 '%关键字%'拼出来。


b)因为步骤B已经提到出参是“每一天的日期、日人数、总人数”,所以要在Core包下面新增一个POJO,用来保证SQL的结果(getter、setter、toString略):


c)除了上面使用问号替代入参,还要处理入参个数不确定的问题。

当时考虑了很久,也没想出好办法。后面点开query方法的源码,发现是这样的:


查看源码才发现,query方法的第三个可变参数实际上是一个对象数组,那参数不确定的问题也能解决了:

用一个List接收参数:


然后把List转成数组:


最后展示该service名称:


E、接口调用:


遇到的问题


收获


明天的计划

1、完成饼图接口

2、完成导出Excel接口


进度

现在是考虑新增一个通过导入EXCEL生成档案的接口,但是这个接口难度不低,也没看过相关的东西,压力山大


返回列表 返回列表
评论

    分享到