有不少人问如何在输出 sql 的同时输出查询所用的参数,再转发 @dreamlu 的一篇博文,希望对大家有用:
通常在java项目开发为了防止sql注入我们通常都采用的预编译的sql,采用“?”号挂参,如下:
SELECT * FROM blog WHERE id = ?
往往在开发测试阶段能获取到完整的可执行的sql能帮我们及时的发现和定位问题。就有了很多朋友使用log4jdbc来记录SQL信息
Druid中LogFilter的配置项
如下图我们可以看到有一项statementExecutableSqlLogEnable默认为false
配置
这里我们以JFinal和Log4j最为演示的例子
java代码
// 配置Druid数据库连接池插件 DruidPlugin druidPlugin = new DruidPlugin(jdbcUrl, user, password); // 配置log插件 Log4jFilter logFilter = new Log4jFilter(); logFilter.setStatementLogEnabled(false); logFilter.setStatementLogErrorEnabled(true); logFilter.setStatementExecutableSqlLogEnable(true); druidPlugin.addFilter(logFilter);
log4j.properties中添加
log4j.logger.druid.sql.Statement=DEBUG
druid中支持的日志Filter
Log4jFilter Slf4jLogFilter Log4j2Filter CommonsLogFilter
原文链接:http://www.dreamlu.net/druid/jfinal/2017/09/22/Print-executable-SQL-using-the-Druid-LogFilter.html