登录
首页 >  数据库 >  MySQL

mybatis使用spring-druid数据源连接池配置log4j打印sql语句以及开启监控平台

来源:SegmentFault

时间:2023-01-17 20:10:08 304浏览 收藏

大家好,今天本人给大家带来文章《mybatis使用spring-druid数据源连接池配置log4j打印sql语句以及开启监控平台》,文中内容主要涉及到MySQL、Java、mybatis、druid-spring-事务-连接池、log4j,如果你对数据库方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

杂七杂的杂

作为程序员,开发工程中,一套利于测试或者监控的工具很重要,mybatis默认没有提供log4j的打印sql语句的配置。

这对于开发rest服务,提供接口的开发者而言,是在很不好做,再加上mybatis很灵活,使用脚本动态生成sql语句,因此,有时候真不知道运行的sql是不是我们所期望的,过滤的条件是否起作用。

所幸,德鲁伊监控平台是个不错的选择,在性能方面druid连接池也比spring原生的要好,因此也是很多企业开发的首选数据源配置。

在引言阶段,我们先看看目前我配置的结果是否是你想要的,如果不是你所期望的,就别浪费时间往下面看,毕竟大家都时间有限,没必要花费时间看一些对自己没用的东西。

  • 控制台打印的日志,慎重的告诉你,这种大量打印信息不能用于生产坏境,生产环境中这些信息写到tomcat的日志文件中了

    druid连接池配置属性列表详解
    

    web.xml配置

    contextConfigLocationclasspath:META-INF/spring/*.xmllog4jConfigLocationWEB-INF/classes/log4j.xmllog4jRefreshInterval60000DruidWebStatFiltercom.alibaba.druid.support.http.WebStatFilterexclusions/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*sessionStatMaxCount1000profileEnabletrueDruidWebStatFilter/*com.alibaba.dubbo.remoting.http.servlet.BootstrapListenerorg.springframework.web.context.ContextLoaderListenerorg.springframework.web.util.Log4jConfigListenerdispatchercom.alibaba.dubbo.remoting.http.servlet.DispatcherServlet1dispatcher/*DruidStatViewcom.alibaba.druid.support.http.StatViewServletresetEnabletrueloginUsernamedruidloginPassworddruidDruidStatView/druid/*

    上面加了注解的配置,是本文配置的重点,其它配置不在这里讲解。

    配置
    缺省值
    说明
    
    name
     
    配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:”DataSource-” + System.identityHashCode(this)
    jdbcUrl
     
    连接数据库的url,不同数据库不一样。例如:mysql : jdbc:mysql://10.20.153.104:3306/druid2;oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
    username
     
    连接数据库的用户名
    password
     
    连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里:https://github.com/alibaba/dr...
    
    driverClassName
    根据url自动识别
    这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
    initialSize
    0
    初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
    maxActive
    8
    最大连接池数量
    maxIdle
    8
    已经不再使用,配置了也没效果
    minIdle
     
    最小连接池数量
    maxWait
     
    获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
    poolPreparedStatements
    false
    是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。5.5及以上版本有PSCache,建议开启。
    maxOpenPreparedStatements
    -1
    要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
    validationQuery
     
    用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。
    testOnBorrow
    true
    申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
    testOnReturn
    false
    归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
    testWhileIdle
    false
    建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。timeBetweenEvictionRunsMillis有两个含义:1) Destroy线程会检测连接的间隔时间 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
    numTestsPerEvictionRun
     
    不再使用,一个DruidDataSource只支持一个EvictionRun
    minEvictableIdleTimeMillis
     
    connectionInitSqls
     
    物理连接初始化的时候执行的sql
    exceptionSorter
    根据dbType自动识别
    当数据库抛出一些不可恢复的异常时,抛弃连接
    filters
     
    属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat; 日志用的filter:log4j;防御sql注入的filter:wall;合并sql的filter:mergeStat
    proxyFilters
     
    类型是List,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系
    

    补充说明

    前面说过,mybatis配置的时候,可以配置sqlSessionFactory的时候通过configLocation属性可以指定mybatis的一些额外配置。

    这里分享一段数据库字段值为null时,不返回字段名,而我们希望的是不管值为什么,字段名都应该返回。配置如下:


    今天带大家了解了MySQL、Java、mybatis、druid-spring-事务-连接池、log4j的相关知识,希望对你有所帮助;关于数据库的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表