记录一下遇到的坑和学到的东西。
我有一个需求是显示一个表格,表格由两部分组成。一部分是每月一日从数据库中查出的固定数据,这部分表格数据在当月一直不变,另外一部分是实时查出的数据。刚开始没绕过来,只知道要用定时任务,后来跟同学交流后明白了应该每月一日去数据库查我需要的数据,查处后插入一个专门记录这个数据的表,定时任务做的事只是每月一次的查询和插入。固定数据我还是从数据库中查,只不过现在查的是我之前新建的那个表,根据当前时间来筛选我需要的数据。朋友建议我在设计表时留一个过期时间字段用于之后方便删除。
插入的时候我想着增加一个datetime类型的创建时间和id,虽然创建时间不同,但没见过用创建时间做主键的。刚开始用的int型方便自增,但后来一想我的数据很庞大的话插入很快就会超出int型范围于是id设置为varchar,想着可以创建个工具类把这个表关联的id和createtime联合生成一个唯一id,但是看之前写代码的人有用UUID(Universally unique identifier)通用唯一标示符,用了之后我又想uuid会不会出现重复,后来看到uuid是16位,这样我的数据都有超千亿不重复所以不用考虑,这样新表就ok了。
一开始用定时任务的时候想着在定时任务里调controller层接口,现在我实在无法吐槽当时的自己。。。controller层就专门用来获取接口其他的不写,component层也不要调controller层,一般调用service层,service的获取用注解。还有一个问题,我的service参数都有一个 HttpServletRequest request,用于获取当前账号,而非cont