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