diff --git a/lms2/nladmin-system/nlsso-server/pom.xml b/lms2/nladmin-system/nlsso-server/pom.xml index 79e060f00..cf9a6644b 100644 --- a/lms2/nladmin-system/nlsso-server/pom.xml +++ b/lms2/nladmin-system/nlsso-server/pom.xml @@ -210,7 +210,7 @@ mysql mysql-connector-java - runtime + compile diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/config/DruidFilter.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/config/DruidFilter.java new file mode 100644 index 000000000..f2ebd783a --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/config/DruidFilter.java @@ -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 values = statement.getParameters().values(); + List 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 values = statement.getParameters().values(); + List 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; + } + + +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/MybatisPlusConfig.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/MybatisPlusConfig.java index c854f1023..7a0c4329e 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/MybatisPlusConfig.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/config/mybatis/MybatisPlusConfig.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -18,6 +19,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; */ @EnableTransactionManagement @Configuration +@Slf4j public class MybatisPlusConfig { /** diff --git a/lms2/nladmin-system/nlsso-server/src/main/resources/META-INF/druid-filter.properties b/lms2/nladmin-system/nlsso-server/src/main/resources/META-INF/druid-filter.properties new file mode 100644 index 000000000..9b025c101 --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/resources/META-INF/druid-filter.properties @@ -0,0 +1 @@ +druid.filters.DruidFilter=org.nl.config.DruidFilter diff --git a/lms2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/lms2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml index 5b480da81..b40c4f9ad 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml +++ b/lms2/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml @@ -14,23 +14,5 @@ nl: port: 6379 password: null database: 1 - oracle: - ip: 172.27.37.66 - port: 1521 - scheme: RTMES - username: LMSTELCOM - password: LMSTELCOM_6463 - sqlserver: - ip: 10.93.41.2 - port: WINCC - username: sa - password: 123 - database: 马钢_RH - dm: - ip: localhost - port: 5236 - scheme: NLADMIN - username: NLADMIN - password: 123456789 logging-path: C:\log\wms dynamic-log-path: C:\log\lms diff --git a/lms2/nladmin-system/nlsso-server/src/main/resources/config/application.yml b/lms2/nladmin-system/nlsso-server/src/main/resources/config/application.yml index f2abec062..5afe2e8c9 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/resources/config/application.yml +++ b/lms2/nladmin-system/nlsso-server/src/main/resources/config/application.yml @@ -33,7 +33,7 @@ spring: max-pool-prepared-statement-per-connection-size: 20 #当值大于20时poolPreparedStatements会自动修改为true #通过connectProperties属性来打开mergeSql功能;慢SQL记录 connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 - use-global-data-source-stat: true #合并多个DruidDataSource的监控数据 +# use-global-data-source-stat: true #合并多个DruidDataSource的监控数据 #filters通过别名的方式配置扩展插件,常用的插件有: #监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall filter: @@ -61,24 +61,25 @@ spring: username: ${DB_USER:${nl.config.mysql.username}} password: ${DB_PWD:${nl.config.mysql.password}} type: com.alibaba.druid.pool.DruidDataSource - oracle: - driver-class-name: oracle.jdbc.OracleDriver - url: jdbc:oracle:thin:@${nl.config.oracle.ip}:${nl.config.oracle.port}:${nl.config.oracle.scheme} - username: ${DB_USER:${nl.config.oracle.username}} - password: ${DB_PWD:${nl.config.oracle.password}} - type: com.alibaba.druid.pool.DruidDataSource - sqlserver: - driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: jdbc:sqlserver://${nl.config.sqlserver.ip}\${nl.config.sqlserver.port};DatabaseName=${nl.config.sqlserver.database} - username: ${DB_USER:${nl.config.sqlserver.username}} - password: ${DB_PWD:${nl.config.sqlserver.password}} - type: com.alibaba.druid.pool.DruidDataSource - dm: - driver-class-name: dm.jdbc.driver.DmDriver - url: jdbc:dm://${nl.config.dm.ip}:${nl.config.dm.port}/${nl.config.dm.scheme}?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8 - username: ${nl.config.dm.username} - password: ${nl.config.dm.password} - type: com.alibaba.druid.pool.DruidDataSource + druid: + filters: + DruidFilter,stat + initial-size: 5 #初始化时建立物理连接的个数 + min-idle: 15 #最小连接池数量 + maxActive: 30 #最大连接池数量 + maxWait: 3000 #获取连接时最大等待时间,单位毫秒 + #申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 + test-while-idle: true + time-between-eviction-runs-millis: 300000 #既作为检测的间隔时间又作为test-while-idle执行的依据 + min-evictable-idle-time-millis: 900000 #销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接 + #用来检测连接是否有效的sql + #mysql中为 select 'x' + #oracle中为 select 1 from dual + validation-query: SELECT 'x' FROM DUAL + test-on-borrow: true #申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true + test-on-return: false #归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true + pool-prepared-statements: true #是否缓存preparedStatement,mysql5.5+建议开启 + max-pool-prepared-statement-per-connection-size: 20 #当值大于20时poolPreparedStatements会自动修改为true flyway: #开启 enabled: false @@ -235,7 +236,7 @@ mybatis-plus: map-underscore-to-camel-case: false call-setters-on-nulls: true jdbc-type-for-null: null - # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl mapper-locations: - classpath:/org/nl/**/mapper/**/*.xml global-config: