Skip to content

SQL监听器

huiche提供了org.huiche.core.listener.Listener接口,可以对huiche-jdbcJdbcExecutor执行sql时的情况进行监听,内置事件,按触发先后顺序如下

  • onTranslate 转译SQL前,仅使用了astdialect转译的才会触发该事件,使用dao的方法会触发的, 如果直接使用JdbcExecutor.sql(String sql...)直接执行原生sql,不会触发该事件
  • onTranslated 转译SQL后, 触发条件同上,如果转译出错,不会触发此事件及后续事件
  • onConnectionAcquired 连接已获取,此时sql,params,connection已经固定,后续出错不会继续触发除onCompleted外的事件
  • onStatementPrepared 语句就绪(未进行参数绑定),后续出错不会继续触发除onCompleted外的事件
  • onSqlExecuting sql执行之前(已完成参数绑定),后续出错不会继续触发除onCompleted外的事件
  • onSqlExecuted sql执行结束(未处理结果集)
  • onCompleted 整体流程结束,成功(已处理结果集)或异常(可能是任意阶段异常)

可根据自己需要 重写实现其中部分方法

huiche还提供了两个内置监听器

  • SlowSQLListener 慢SQL监听器,默认记录onSqlExecutingonSqlExecuted之间的耗时,通过阈值,判断是否要输出慢SQL日志,如果使用huiche-spring-boot-starter,可直接配置huiche.slow-sql-threshold来启用该监听器
  • SQLLogListener 日志监听器,默认在onConnectionAcquired时,打印要执行的sql语句,如果使用huiche-spring-boot-starter,可直接配置huiche.enable-sql-log来启用该监听器

可以自行配置使用以上两个内置监听器,也可以自行编写自己的监听器,需要注册在配置中生效

了解添加监听器