Druid初体验
官方介绍
Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。
下载链接
- Github项目地址https://github.com/alibaba/druid
- 文档 https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
- 下载 http://repo1.maven.org/maven2/com/alibaba/druid/
- 监控DEMO http://120.26.192.168/druid/index.html(打不开)
对应版本:1.2.8
把代码下载下来,然后点击标签,切到1.2.8版本
编译代码
mvn install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true
新建数据
启动本地数据库
新建数据库 druid_test_db
运行单元测试
找到 com.alibaba.druid.pool.mysql.MySqlTest
修改数据库ip和用户名、密码
protected void setUp() throws Exception {
dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/druid_test_db?allowMultiQueries=true");
dataSource.setUsername("root");
dataSource.setPassword("");
dataSource.setFilters("log4j");
dataSource.setValidationQuery("SELECT 1");
dataSource.setTestOnBorrow(true);
dataSource.setTestWhileIdle(true);
}
运行单元测试
发现报错,不支持的时区
2022-05-09 23:45:08,972 [ERROR] DruidDataSource:2840 - create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/druid_test_db?allowMultiQueries=true, errorCode 0, state 01S00
java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.
数据库连接加上 &serverTimezone=GMT%2B8
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/druid_test_db?allowMultiQueries=true&serverTimezone=GMT%2B8");
再次运行单元测试,日志如下
2022-05-09 23:48:56,928 [INFO ] ClickHouseDriver:42 - Driver registered
2022-05-09 23:48:56,977 [INFO ] DruidDataSource:998 - {dataSource-1} inited
2022-05-09 23:48:57,606 [DEBUG] Connection:132 - {conn-10001,procId-73} connected
2022-05-09 23:48:57,634 [DEBUG] Connection:132 - {conn-10001} pool-connect
----------- : class com.mysql.cj.jdbc.ConnectionImpl
2022-05-09 23:48:57,665 [DEBUG] Statement:137 - {conn-10001, stmt-20000} created
2022-05-09 23:48:57,692 [DEBUG] Statement:137 - {conn-10001, stmt-20000} executed. 26.419 millis. select 1;select 1
2022-05-09 23:48:57,695 [DEBUG] ResultSet:142 - {conn-10001, stmt-20000, rs-50000} open
2022-05-09 23:48:57,697 [DEBUG] ResultSet:142 - {conn-10001, stmt-20000, rs-50000} Header: [1]
2022-05-09 23:48:57,700 [DEBUG] ResultSet:142 - {conn-10001, stmt-20000, rs-50001} open
2022-05-09 23:48:57,701 [DEBUG] ResultSet:142 - {conn-10001, stmt-20000, rs-50001} Header: [1]
2022-05-09 23:48:57,701 [DEBUG] ResultSet:142 - {conn-10001, stmt-20000, rs-50001} closed
2022-05-09 23:48:57,701 [DEBUG] Statement:137 - {conn-10001, stmt-20000} closed
2022-05-09 23:48:57,702 [DEBUG] Connection:132 - {conn-10001} pool-recycle
2022-05-09 23:48:57,702 [INFO ] DruidDataSource:2071 - {dataSource-1} closing ...
2022-05-09 23:48:57,704 [DEBUG] Connection:132 - {conn-10001} closed
2022-05-09 23:48:57,705 [INFO ] DruidDataSource:2144 - {dataSource-1} closed
Process finished with exit code 0
说明单元测试运行成功