jdbc连接池

jdbc连接池

前言

会有一系列的文章介绍common-*.jar的各种用法,这些工具类jar包都已上传在maven中央库。可以直接通过maven坐标引入使用。源码可以参见:https://gitee.com/rjzjh/common

一些场景

连接一个数据库很容易,直接引入依赖包,组装好jdbc地址,加载驱动类,如果想用连接池又得引入连接池的依赖包,一连串的动作简单而乏味,一般的做法是自己存一个工具类,要的时候复制,改改相应的链接了事。common-jdbc依赖包也就是把这些乏味的事做到一个api中,到要的时候只要修改配置文件的配置项,直接调用api就可以了。

使用示例

使用前需引入依赖包,maven的坐标为:

1
2
3
4
5
<dependency>
<groupId>net.wicp.tams</groupId>
<artifactId>common-jdbc</artifactId>
<version>最后版本</version>
</dependency>

使用前需要把配置文件中的配置项做些修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
common.jdbc.datasource.default.host=localhost
common.jdbc.datasource.default.port=3306
#用于SSH认证的端口,更多的见类:SshAssist
common.jdbc.datasource.default.sshLocalhostprot=null
common.jdbc.datasource.default.defaultdb=null
common.jdbc.datasource.default.urlparam=useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false
common.jdbc.datasource.default.username=root
common.jdbc.datasource.default.password=mysql
common.jdbc.datasource.default.driverClassName=com.mysql.jdbc.Driver
common.jdbc.datasource.default.dbType=mysql
common.jdbc.datasource.default.initialSize=3
common.jdbc.datasource.default.minIdle=3
common.jdbc.datasource.default.maxActive=200
common.jdbc.datasource.default.maxWait=60000
common.jdbc.datasource.default.timeBetweenEvictionRunsMillis=60000
common.jdbc.datasource.default.minEvictableIdleTimeMillis=300000
common.jdbc.datasource.default.validationQuery=select 1
common.jdbc.datasource.default.testWhileIdle=true
common.jdbc.datasource.default.testOnBorrow=false
common.jdbc.datasource.default.testOnReturn=false
common.jdbc.datasource.default.poolPreparedStatements=true
#在mysql5.5以下的版本中没有PSCache功能,建议关闭掉maxOpenPreparedStatements=false,maxPoolPreparedStatementPerConnectionSize大于0时为设置为true
common.jdbc.datasource.default.maxPoolPreparedStatementPerConnectionSize=100
common.jdbc.datasource.default.filters=stat,wall
common.jdbc.datasource.default.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

上面的这些参数是默认配置,如果需要修改,只需通过“Conf.overProp(props);”覆盖相关的配置项就可以了。

具体修改方法见下面的testDruid方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package net.wicp.tams.common.jdbc.test;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import javax.sql.DataSource;

import org.junit.Test;

import net.wicp.tams.common.Conf;
import net.wicp.tams.common.jdbc.DruidAssit;

public class DruidTest {
// 跟据内存配置中心的配置创建连接池
@Test
public void testDruid() throws SQLException {
//如果在配置文件中已进行配置就跳过这步
Properties props = new Properties();
props.put("common.jdbc.datasource.default.host", "localhost");
props.put("common.jdbc.datasource.default.username", "root");
props.put("common.jdbc.datasource.default.password", "mysql");
props.put("common.jdbc.datasource.default.port", 3307);
Conf.overProp(props);
Connection connection = DruidAssit.getConnection();// DruidAssit.getConnection("default");
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("select count(*) from test.demo");
rs.next();
System.out.println(rs.getLong(1));
statement.close();
connection.close();
}

// 创建内存配置中心不同地址的数据源,适用于动态创建数据源
@Test
public void testSource() throws SQLException {
Properties props = new Properties();
props.put("host", "localhost");
props.put("username", "root");
props.put("password", "mysql");
props.put("port", 3307);
DataSource newDataSource = DruidAssit.getDataSourceNoConf("other", props);
Connection connection = newDataSource.getConnection();
System.out.println(connection);
connection.close();
}
}

坚持原创技术分享,您的支持是我前进的动力!