1、SQL语句的问题
1、SQL这块花了挺多时间
1、理解业务
要之前自己要查什么数据,再去写SQL,这句话看起来像一句废话,但是很多时候,不知道自己在干嘛。
2、时间
1、需要查询哪个时间字段
表里有很多time有create_time,有call_time,还有start_time。同样的,其他的表里可能有很多看起来一样的字段,但实际上完全不一样,你需要知道。
除了time,可能还会有很多不同的status,你要看清是哪个,根据哪个条件判断,要修改哪个。不要像甜油和酱油一样搞不清。
2、查询某个时间范围内的数据
如果要查询某个时间范围内的数据,
时间 <= 小的时间(比如startTime) > =大的时间(比如endTime)。
而不是反过来。这是很低级的错误,一定要注意。
3、mysql里 加 30 分钟的写法
错误示范:
t.create_time >= s.create_time+30
正确示范:
t.create_time >=DATE_ADD(s.create_time, INTERVAL 30 MINUTE)
3、MySQL 中,用于排序查询结果的关键字是ORDER BY ,而不是 SORT BY !
4、造数据的问题
可以先直接在生产环境查询,注意只是查询!
因为开发或测试环境里,经常没有数据。而且查询的时候,可以不要查多,先查1天的。
要清楚自己是根据什么条件查的,造数据的时候,就造和这些符合的。
2、lambda的问题
1 lambda表达式 map( m -> m::getPhone)
如果phone重复,就会报错 Duplicate key 。根据情况可以处理,也可以不处理。
如果要处理的话,可以这样:
map( m -> m::getPhone,(k1, k2) -> k1)
这个意思是如果出现相同的键,则选择第一个键对应的值。
2 可以在lambda表达示里使用,封装好的方法代码块
之前我有写过如何封装方法。【IDEA使用技巧】一键封装方法
这样代码就比较简洁了。
3、如果A项目引用了某个common包,想要更新A项目里的common包。
可以直接在common项目pull之后,install 就行了。因为它会自动打包,然后布置到本地仓库。因为A项目是引用了common依赖,它会自己更新。
4、XXL_JOB
1、传入的时间参数 ,要根据事实去处理!
又是一句看起来像废话,但是复制代码的时候不认真看的问题。
2、cron 表达式需要了解一下
写完之后,可以查看下次执行时间:
5、可能会随着环境改变的值,不要写死在代码里
比如,访问的接口,可以用@Value 注入,后期方便更新代码。
@Value("${xx.xx.url:xxxxx}") private String urlId;