目錄
一、Druid簡介
二、Druid的優點
三、使用 Durid 進行 JDBC MySQL 的連接
3.1 添加 Druid 的依賴、資料庫驅動
3.2 創建 JDBC 工具類
3.3 添加配置引數
3.4 測驗代碼
一、Druid簡介
Druid是阿里開源的資料庫連接池,作為后起之秀,性能比dbcp、c3p0更高,使用也越來越廣泛,
當然Druid不僅僅是一個連接池,還有很多其他的功能,
二、Druid的優點
- 高性能,性能比dbcp、c3p0高很多,
- 只要是jdbc支持的資料庫,druid都支持,對資料庫的支持性好,并且Druid針對oracle、mysql做了特別優化,
- 提供監控功能,可以監控sql陳述句的執行時間、ResultSet持有時間、回傳行數、更新行數、錯誤次數、錯誤堆疊等資訊,來了解連接池、sql陳述句的作業情況,方便統計、分析SQL的執行性能
三、使用 Durid 進行 JDBC MySQL 的連接
3.1 添加 Druid 的依賴、資料庫驅動
<!-- 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 工具類
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 檔案并添加如下配置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://singleNode:3306/spark?useSSL=false&createDatabaseIfNotExist=true&characterEncoding=UTF-8
username=root
password=root
3.4 測驗代碼
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://www.uj5u.com/houduan/299661.html
標籤:java
