mysql:流程控制函数:
1. IF(value,value1,value2)
2. IFNULL(value1,value2)
3. CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 …[ELSE result] END
eg:
SELECT
last_name,
salary,
CASE
WHEN salary > 10000
THEN '高富帅'
WHEN salary > 80000
THEN '潜力股'
WHEN salary > 60000
THEN '小屌丝'
ELSE '小草根'
END "结果"
FROM
employees ;
4. CASE expr WHEN 常量值1 THEN 值1 WHEN 常量值2 THEN 值2… [ELSE 值n] END
eg:
SELECT
last_name,
department_id,
CASE
department_id
WHEN 10
THEN salary * 1.1
WHEN 20
THEN salary * 1.2
WHEN 30
THEN salary * 1.3
ELSE salary * 1.4
END "工资"
FROM
employees ;
truncate:清空表记录且不可回滚,
delete:可回滚
drop:删除表或库,不可回滚
Spring中的事件机制:
1.创建监听器:
继承:
implements ApplicationListener<Event> {
@Override
public void onApplicationEvent(Event event) {
....
}
}
注解方式
@EventListener
public void handleContextClosedEvent(Event event) {
.....
}
Spring内置事件:
- ApplicationEvent:
ApplicationEvent
是所有事件模型的抽象基类 - ApplicationContextEvent:代表了与
Spring
应用上下文(ApplicationContext
)有关的事件。这个抽象类在构造方法中接收一个ApplicationContext
对象作为事件源(source
) - ContextRefreshedEvent 和 ContextClosedEvent:
ContextRefreshedEvent 事件在 Spring 容器初始化或者刷新时触发,此时所有的 Bean 都已经被完全加载,且 post-processor 也已经被调用,但此时容器尚未开始接收请求。 ContextClosedEvent 事件在 Spring 容器关闭时触发,此时容器尚未销毁所有 Bean。
- ContextStartedEvent 和 ContextStoppedEvent:
ContextStartedEvent:这是Spring应用上下文的启动事件。当调用实现了 Lifecycle 接口的 Bean 的 start 方法时,Spring会发布这个事件。这个事件的发布标志着Spring应用上下文已经启动完成,所有的Bean都已经被初始化并准备好接收请求。我们可以监听这个事件来在应用上下文启动后执行一些自定义逻辑,比如开启一个新线程,或者连接到一个远程服务等。ContextStoppedEvent:这是Spring应用上下文的停止事件。当调用实现了 Lifecycle 接口的 Bean 的 stop 方法时,Spring会发布这个事件。这个事件的发布标志着Spring应用上下文开始停止的过程,此时Spring将停止接收新的请求,并开始销毁所有的Singleton Bean。