20230831工作心得:SQL这块花了挺多时间

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;
相关推荐
plainGeekDev2 小时前
GreenDAO → Room
android·java·kotlin
jiayou642 小时前
KingbaseES 表级与列级加密完全指南
数据库·后端
亦暖筑序7 小时前
Java 8老系统AI Workflow实战:把一次性AI对话升级成可恢复工作流
java·后端
敲代码的彭于晏7 小时前
Bean 生命周期完全图解:前端同学也能看懂的 Spring 核心机制
java·前端·后端
plainGeekDev8 小时前
ButterKnife → ViewBinding
android·java·kotlin
GBASE1 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
像我这样帅的人丶你还1 天前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩1 天前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
tntxia1 天前
Mybatis的日志输入
java
亦暖筑序1 天前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式