druid 依赖
1
2
3
4
5
6
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.3</version>
</dependency>
DataSource链接池
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public class BaseDaoImpl<T> {
private static Logger logger = LoggerFactory.getLogger(BookTargetUrlDaoImpl.class.getName());
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");// 加载驱动
} catch (ClassNotFoundException e) {
String fullStackTrace = ExceptionUtils.getStackTrace(e);
logger.error(fullStackTrace);
}
}
private static Connection conn;
public static Connection getConnection() {
try {
logger.debug("getConnection!");
if (conn == null || conn.isClosed()) {
conn = druidDataSource().getConnection();
logger.debug("createConnection success!");
} else {
return conn;
}
} catch (SQLException e) {
String fullStackTrace = ExceptionUtils.getStackTrace(e);
logger.error(fullStackTrace);
}
return conn;
}
public static void close() {
if (conn != null) {
try {
conn.close();
logger.debug("close success!");
} catch (SQLException e) {
String fullStackTrace = ExceptionUtils.getStackTrace(e);
logger.error(fullStackTrace);
}
}
}
private static DataSource druidDataSource() {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(Config.dbDriverClassName);
druidDataSource.setUrl(Config.dbUrl);
druidDataSource.setUsername(Config.dbUsername);
druidDataSource.setPassword(Config.dbPassword);
druidDataSource.setInitialSize(Config.dbInitialSize);
druidDataSource.setMaxActive(Config.dbMaxActive);
druidDataSource.setMaxWait(Config.dbMaxWait);
druidDataSource.setTimeBetweenEvictionRunsMillis(Config.dbTimeBetweenEvictionRunsMillis);
druidDataSource.setMinEvictableIdleTimeMillis(Config.dbMinEvictableIdleTimeMillis);
druidDataSource.setValidationQuery(Config.dbValidationQuery);
druidDataSource.setTestWhileIdle(Config.dbTestWhileIdle);
druidDataSource.setTestOnBorrow(Config.dbTestOnBorrow);
druidDataSource.setTestOnReturn(Config.dbTestOnReturn);
druidDataSource.setPoolPreparedStatements(Config.dbPoolPreparedStatements);
druidDataSource.setMaxPoolPreparedStatementPerConnectionSize(Config.dbMaxPoolPreparedStatementPerConnectionSize);
return druidDataSource;
}
}
local.properties 配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#数据源
db.url= jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
db.driverClassName=com.mysql.cj.jdbc.Driver
db.username=root
db.password=123456
# 初始化大小,最小,最大
db.initialSize=5
db.minIdle=5
db.maxActive=20
# 配置获取连接等待超时的时间
db.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
db.timeBetweenEvictionRunsMillis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
db.minEvictableIdleTimeMillis=300000
db.validationQuery=SELECT 1
db.testWhileIdle=true
db.testOnBorrow=false
db.testOnReturn=false
# 打开PSCache,并且指定每个连接上PSCache的大小
db.poolPreparedStatements=true
db.maxPoolPreparedStatementPerConnectionSize=20