<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.8.0</version>
</dependency>
/**
* @author WGR
* @create 2019/9/7 -- 12:59
*/
/**
* 对数据源进行封装,打印运行sql
*/
@Configuration
public class P6spyConfig {
class P6DataSourceBeanPostProcessor implements BeanPostProcessor,Ordered {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof DataSource){
return new P6DataSource((DataSource) bean);
}
return bean;
}
@Override
public int getOrder() {
return Ordered.LOWEST\_PRECEDENCE;
}
}
@Bean
public P6DataSourceBeanPostProcessor p6DataSource(){
return new P6DataSourceBeanPostProcessor();
}
}
如果你是Boot项目,建议你这样包装数据源,在mybatisplus推荐,但是在测试过程中没有打印SQL,(现官网打不开)
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.8.0</version>
</dependency>
spy.properties的文件配置
# P6Spy\u7684\u914d\u7f6e,\u53c2\u8003\u5b98\u65b9\u6587\u6863
autoflush=false
dateformat=yyyy-MM-dd HH:mm:ss
reloadproperties=true
reloadpropertiesinterval=60
appender=com.p6spy.engine.spy.appender.Slf4JLogger
logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat
customLogMessageFormat=%(executionTime)ms | %(sqlSingleLine)
databaseDialectDateFormat=yyyy-MM-dd HH:mm:ss
databaseDialectBooleanFormat=boolean
jmx=false
filter=true
#excludecategories=info,debug,result,resultset,batch,commit,rollback
excludecategories=info,debug,result,resultset,batch,commit,rollback
xml的配置
<!-- 参考: https://blog.csdn.net/ggd628300/article/details/51758925 -->
<!-- 连接只读数据库时配置为true, 保证安全 -->
<property name="readOnly" value="false" />
<!-- 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒 -->
<property name="connectionTimeout" value="30000" />
<!-- 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 -->
<property name="idleTimeout" value="600000" />
<!-- 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait\_timeout参数(show variables like '%timeout%';) -->
<property name="maxLifetime" value="1800000" />
<!-- 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core\_count \* 2) + effective\_spindle\_count) -->
<!-- 浦发生产: 12C36G effective\_spindle\_count为有效磁盘数-->
<property name="maximumPoolSize" value="30" />
</bean>
<!-- 3.代理的连接池,为了打印实际的SQL语句 -->
<bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource">
<constructor-arg name="delegate" ref="systemDataSource"/>
</bean>
p6spy是数据库动态监控的一种框架,它可以使得数据库数据无缝拦截和操作,而不必对现有应用程序的代码作任何修改。P6Spy分发包包括P6Log,它是一个可记录任何Java应用程序的所有JDBC事务的应用程序。其配置完成使用时,可以进行数据访问性能的监测。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章