5 changed files with 113 additions and 4 deletions
@ -0,0 +1,88 @@ |
|||
package org.nl.config; |
|||
|
|||
import com.alibaba.druid.filter.FilterChain; |
|||
import com.alibaba.druid.filter.FilterEventAdapter; |
|||
import com.alibaba.druid.proxy.jdbc.JdbcParameter; |
|||
import com.alibaba.druid.proxy.jdbc.PreparedStatementProxy; |
|||
import com.alibaba.druid.proxy.jdbc.ResultSetProxy; |
|||
import com.alibaba.druid.proxy.jdbc.StatementProxy; |
|||
import com.alibaba.druid.sql.SQLUtils; |
|||
import com.alibaba.druid.util.JdbcUtils; |
|||
import com.mysql.cj.jdbc.result.ResultSetImpl; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
|
|||
import java.sql.SQLException; |
|||
import java.util.ArrayList; |
|||
import java.util.Collection; |
|||
import java.util.List; |
|||
|
|||
/* |
|||
* @author ZZQ |
|||
* @Date 2023/2/10 11:27 上午 |
|||
*/ |
|||
@Slf4j |
|||
public class DruidFilter extends FilterEventAdapter { |
|||
|
|||
@Override |
|||
public int preparedStatement_executeUpdate(FilterChain chain, PreparedStatementProxy statement) throws SQLException { |
|||
|
|||
return super.preparedStatement_executeUpdate(chain, statement); |
|||
} |
|||
|
|||
@Override |
|||
public int statement_executeUpdate(FilterChain chain, StatementProxy statement, String sql) throws SQLException { |
|||
|
|||
return super.statement_executeUpdate(chain, statement, sql); |
|||
} |
|||
|
|||
@Override |
|||
protected void statementExecuteAfter(StatementProxy statement, String sql, boolean result) { |
|||
int size = statement.getParametersSize(); |
|||
String executeSql = sql; |
|||
int count = 0; |
|||
try { |
|||
count = statement.getUpdateCount(); |
|||
} catch (Exception ex) { |
|||
} |
|||
if (count > 0) { |
|||
if (size > 0) { |
|||
Collection<JdbcParameter> values = statement.getParameters().values(); |
|||
List<Object> params = new ArrayList<>(); |
|||
for (JdbcParameter value : values) { |
|||
params.add(value.getValue()); |
|||
} |
|||
executeSql = SQLUtils.format(executeSql, JdbcUtils.MYSQL, params); |
|||
} |
|||
log.info("[----SQL----][update][ SQL: {} ]", executeSql); |
|||
} |
|||
super.statementExecuteAfter(statement, sql, result); |
|||
} |
|||
|
|||
@Override |
|||
public ResultSetProxy statement_getResultSet(FilterChain chain, StatementProxy statement) throws SQLException { |
|||
ResultSetProxy rs = super.statement_getResultSet(chain, statement); |
|||
String executeSql = statement.getLastExecuteSql(); |
|||
int result = 0; |
|||
if (rs != null) { |
|||
ResultSetImpl rss = rs.getResultSetRaw().unwrap(ResultSetImpl.class); |
|||
result = rss.getRows().size(); |
|||
} |
|||
try { |
|||
int size = statement.getParametersSize(); |
|||
if (size > 0) { |
|||
Collection<JdbcParameter> values = statement.getParameters().values(); |
|||
List<Object> params = new ArrayList<>(); |
|||
for (JdbcParameter value : values) { |
|||
params.add(value.getValue()); |
|||
} |
|||
executeSql = SQLUtils.format(executeSql, JdbcUtils.MYSQL, params); |
|||
} |
|||
} catch (Exception ex) { |
|||
log.warn("[-SQL解析异常-][{}]", ex.getMessage()); |
|||
} |
|||
log.info("[----SQL----][select][执行结果:{}][ SQL: {} ]", result, executeSql); |
|||
return rs; |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1 @@ |
|||
druid.filters.DruidFilter=org.nl.config.DruidFilter |
Loading…
Reference in new issue