一、Druid简介
Druid是阿里开源的数据库连接池,作为后起之秀,性能比dbcp、c3p0更高,使用也越来越广泛。
当然Druid不仅仅是一个连接池,还有很多其他的功能。
二、Druid的优点
- 高性能。性能比dbcp、c3p0高很多。
- 只要是jdbc支持的数据库,druid都支持,对数据库的支持性好。并且Druid针对oracle、mysql做了特别优化。
- 提供监控功能。可以监控sql语句的执行时间、ResultSet持有时间、返回行数、更新行数、错误次数、错误堆栈等信息,来了解连接池、sql语句的工作情况,方便统计、分析SQL的执行性能
三、使用 Durid 进行 JDBC MySQL 的连接
3.1 添加 Druid 的依赖、数据库驱动
1
2
3
4
5
6
7
8
9
10
11
12
|
<!-- mysql-connector-java -->
< dependency >
< groupId >mysql</ groupId >
< artifactId >mysql-connector-java</ artifactId >
< version >5.1.49</ version >
</ dependency >
<!-- druid -->
< dependency >
< groupId >com.alibaba</ groupId >
< artifactId >druid</ artifactId >
< version >1.0.27</ version >
</ dependency >
|
3.2 创建 JDBC 工具类
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
package cn.kgc.utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.log4j.Logger;
import java.io.File;
import java.io.FileInputStream;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
* 【JDBC】业务工具类
*/
public class JDBCReadUtils implements Serializable {
private static Logger logger = Logger.getLogger(JDBCReadUtils. class );
/**
* 实现JDBCHelper的单例化
*/
private static JDBCReadUtils instance = null ;
private QueryRunner runner = null ;
/**
* 实现单例的过程中,创建唯一的数据库连接池
*/
private JDBCReadUtils(String url) {
Properties properties = new Properties();
try {
properties.load( new FileInputStream( new File(url)));
runner = new QueryRunner(DruidDataSourceFactory.createDataSource(properties));
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
public JDBCReadUtils() {
}
/**
* 获取单例
*
* @return 单例
*/
public static JDBCReadUtils getInstance(String url) {
if (instance == null ) {
synchronized (JDBCReadUtils. class ) {
if (instance == null ) {
instance = new JDBCReadUtils(url);
}
}
}
return instance;
}
/**
* 查询(返回Array结果)
*/
private Object[] queryArray(String sql, Object... params) {
Object[] result = null ;
try {
result = runner.query(sql, new ArrayHandler(), params);
} catch (SQLException e) {
logger.error(e.getMessage());
}
return result;
}
/**
* 查询(返回ArrayList结果)
*/
public List<Object[]> queryArrayList(String sql, Object... params) {
List<Object[]> result = null ;
try {
result = runner.query(sql, new ArrayListHandler(), params);
} catch (SQLException e) {
logger.error(e.getMessage());
}
return result == null ? new ArrayList<>() : result;
}
/**
* 更新(包括UPDATE、INSERT、DELETE,返回受影响的行数)
*/
public int update(String sql, Object... params) {
int result = 0 ;
try {
result = runner.update(sql, params);
} catch (SQLException e) {
logger.error(e.getMessage());
}
return result;
}
}
|
3.3 添加配置参数
在 resource 目录中添加 jdbc.properties 文件并添加如下配置
1
2
3
4
|
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://singleNode:3306/spark?useSSL=false&createDatabaseIfNotExist=true&characterEncoding=UTF-8
username=root
password=root
|
3.4 测试代码
1
2
3
4
5
6
7
8
9
10
11
12
|
package cn.kgc;
import cn.kgc.utils.JDBCReadUtils;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Object[]> result = JDBCReadUtils.getInstance( "C:\\Users\\Administrator\\Desktop\\总部实战课\\spark\\project\\src\\main\\resources\\jdbc.properties" )
.queryArrayList( "select * from entity_question_number_accuracy limit 10;" );
for (Object o[] : result) {
System.out.println(o[ 0 ] + "\t" + o[ 1 ] + "\t" + o[ 2 ] + "\t" + o[ 3 ]);
}
}
}
|
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容!
原文链接:https://blog.csdn.net/sweet19920711/article/details/120247206