Java Durid進(jìn)行JDBC連接詳解
一、Druid簡(jiǎn)介
Druid是阿里開源的數(shù)據(jù)庫連接池,作為后起之秀,性能比dbcp、c3p0更高,使用也越來越廣泛。
當(dāng)然Druid不僅僅是一個(gè)連接池,還有很多其他的功能。
二、Druid的優(yōu)點(diǎn)
- 高性能。性能比dbcp、c3p0高很多。
- 只要是jdbc支持的數(shù)據(jù)庫,druid都支持,對(duì)數(shù)據(jù)庫的支持性好。并且Druid針對(duì)oracle、mysql做了特別優(yōu)化。
- 提供監(jiān)控功能??梢员O(jiān)控sql語句的執(zhí)行時(shí)間、ResultSet持有時(shí)間、返回行數(shù)、更新行數(shù)、錯(cuò)誤次數(shù)、錯(cuò)誤堆棧等信息,來了解連接池、sql語句的工作情況,方便統(tǒng)計(jì)、分析SQL的執(zhí)行性能
三、使用 Durid 進(jìn)行 JDBC MySQL 的連接
3.1 添加 Druid 的依賴、數(shù)據(jù)庫驅(qū)動(dòng)
<!-- 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 創(chuàng)建 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】業(yè)務(wù)工具類
*/
public class JDBCReadUtils implements Serializable {
private static Logger logger = Logger.getLogger(JDBCReadUtils.class);
/**
* 實(shí)現(xiàn)JDBCHelper的單例化
*/
private static JDBCReadUtils instance = null;
private QueryRunner runner = null;
/**
* 實(shí)現(xiàn)單例的過程中,創(chuàng)建唯一的數(shù)據(jù)庫連接池
*/
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結(jié)果)
*/
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結(jié)果)
*/
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,返回受影響的行數(shù))
*/
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 添加配置參數(shù)
在 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 測(cè)試代碼
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\\總部實(shí)戰(zhàn)課\\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]);
}
}
}
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
spring boot + mybatis實(shí)現(xiàn)動(dòng)態(tài)切換數(shù)據(jù)源實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于spring boot + mybatis實(shí)現(xiàn)動(dòng)態(tài)切換數(shù)據(jù)源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10
SpringBoot整合Swagger3生成接口文檔的示例代碼
Swagger 是一個(gè) RESTful API 的開源框架,它的主要目的是幫助開發(fā)者設(shè)計(jì)、構(gòu)建、文檔化和測(cè)試 Web API,本文給大家介紹了SpringBoot整合Swagger3生成接口文檔的流程,并通過代碼講解的非常詳細(xì),需要的朋友可以參考下2024-04-04
利用 filter 機(jī)制給靜態(tài)資源 url 加上時(shí)間戳,來防止js和css文件的緩存問題
這篇文章主要介紹了利用 filter 機(jī)制給靜態(tài)資源 url 加上時(shí)間戳,來防止js和css文件的緩存問題的相關(guān)資料,需要的朋友可以參考下2016-05-05
Spring mvc Json處理實(shí)現(xiàn)流程代碼實(shí)例
這篇文章主要介紹了Spring mvc Json處理實(shí)現(xiàn)流程代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Java Socket+mysql實(shí)現(xiàn)簡(jiǎn)易文件上傳器的代碼
最近在做一個(gè)小項(xiàng)目,項(xiàng)目主要需求是實(shí)現(xiàn)一個(gè)文件上傳器,通過客戶端的登陸,把本地文件上傳到服務(wù)器的數(shù)據(jù)庫(本地的)。下面通過本文給大家分享下實(shí)現(xiàn)代碼,感興趣的朋友一起看看吧2016-10-10
Springboot基礎(chǔ)之RedisUtils工具類
本文來說下RedisUtils工具類,主要介紹了整合Redis、MyBatis,封裝RedisUtils工具類等知識(shí),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05
SpringBoot整合Mybatis自定義攔截器不起作用的處理方案
這篇文章主要介紹了SpringBoot整合Mybatis自定義攔截器不起作用的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Java實(shí)現(xiàn)添加條形碼到PDF表格的方法詳解
條碼的應(yīng)用已深入生活和工作的方方面面。本文以操作PDF文件為例,介紹如何利用Java語言在編輯表格時(shí),向單元格中添加條形碼,感興趣的可以學(xué)習(xí)一下2022-06-06

