16. Interceptor功能
BeetlSql可以在执行sql前后执行一系列的Intercetor,从而有机会执行各种扩展和监控,这比已知的通过数据库连接池做Interceptor更加容易。如下Interceptor都是有可能的
- 监控sql执行较长时间语句,打印并收集。TimeStatInterceptor 类完成
- 对每一条sql语句执行后输出其sql和参数,也可以根据条件只输出特定sql集合的sql。便于用户调试。DebugInterceptor完成
- 对sql预计解析,汇总sql执行情况(未完成,需要集成第三方sql分析工具)
你也可以自行扩展Interceptor类,来完成特定需求。 如下,在执行数据库操作前会执行before,通过ctx可以获取执行的上下文参数,数据库成功执行后,会执行after方法
public interface Interceptor {
public void before(InterceptorContext ctx);
public void after(InterceptorContext ctx);
}
InterceptorContext 如下,包含了sqlId,实际得sql,和实际得参数, 也包括执行结果result。对于查询,执行结果是查询返回的结果集条数,对于更新,返回的是成功条数,如果是批量更新,则是一个数组。可以参考源码DebugInterceptor
public class InterceptorContext {
private String sqlId;
private String sql;
private List<SQLParameter> paras;
private boolean isUpdate = false ;
private Object result ;
private Map<String,Object> env = null;
}
当前内容版权归 ibeetl.com 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 ibeetl.com .