欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Durid進(jìn)行JDBC連接詳解

 更新時(shí)間:2021年09月15日 09:15:38   作者:Vicky_Tang  
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí),文章簡單使用Durid進(jìn)行JDBC連接,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下

一、Druid簡介

Druid是阿里開源的數(shù)據(jù)庫連接池,作為后起之秀,性能比dbcp、c3p0更高,使用也越來越廣泛。

當(dāng)然Druid不僅僅是一個(gè)連接池,還有很多其他的功能。

二、Druid的優(yōu)點(diǎn)

  • 高性能。性能比dbcp、c3p0高很多。
  • 只要是jdbc支持的數(shù)據(jù)庫,druid都支持,對數(shù)據(jù)庫的支持性好。并且Druid針對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 測試代碼

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)文章

  • 使用Java注解和反射實(shí)現(xiàn)JSON字段自動(dòng)重命名

    使用Java注解和反射實(shí)現(xiàn)JSON字段自動(dòng)重命名

    這篇文章主要介紹了如何使用Java注解和反射實(shí)現(xiàn)JSON字段自動(dòng)重命名,文中通過代碼示例和圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • 關(guān)于SpringSecurity配置403權(quán)限訪問頁面的完整代碼

    關(guān)于SpringSecurity配置403權(quán)限訪問頁面的完整代碼

    本文給大家分享SpringSecurity配置403權(quán)限訪問頁面的完整代碼,配置之前和配置之后的詳細(xì)介紹,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-06-06
  • C++排序算法之桶排序原理及實(shí)現(xiàn)詳解

    C++排序算法之桶排序原理及實(shí)現(xiàn)詳解

    這篇文章主要介紹了C++排序算法之桶排序原理及實(shí)現(xiàn)詳解, C++ 桶排序是一種線性時(shí)間復(fù)雜度的排序算法,它通過將待排序元素分配到不同的桶中,然后對每個(gè)桶中的元素進(jìn)行排序,最后將所有桶中的元素按順序合并得到有序序列,需要的朋友可以參考下
    2023-10-10
  • java多線程Thread-per-Message模式詳解

    java多線程Thread-per-Message模式詳解

    本篇文章給大家分享java多線程Thread-per-Message模式的相關(guān)知識(shí)點(diǎn),對此有興趣的朋友參考學(xué)習(xí)下。
    2018-05-05
  • Java中的線程同步與ThreadLocal無鎖化線程封閉實(shí)現(xiàn)

    Java中的線程同步與ThreadLocal無鎖化線程封閉實(shí)現(xiàn)

    這篇文章主要介紹了Java中的線程同步與ThreadLocal無鎖化線程封閉實(shí)現(xiàn),Synchronized關(guān)鍵字與ThreadLocal變量的使用是Java中線程控制的基礎(chǔ),需要的朋友可以參考下
    2016-03-03
  • SpringBoot實(shí)現(xiàn)自定義啟動(dòng)器的示例詳解

    SpringBoot實(shí)現(xiàn)自定義啟動(dòng)器的示例詳解

    雖然Spring官方給我們提供了很多的啟動(dòng)器供我們使用,但有時(shí)候我們也會(huì)遇到某些特殊場景,這些啟動(dòng)器滿足不了。這個(gè)時(shí)候就需要自定義一個(gè)啟動(dòng)器供我們使用,本文為大家介紹了SpringBoot實(shí)現(xiàn)自定義啟動(dòng)器的方法,希望對大家有所幫助
    2023-01-01
  • Spring Boot整合RabbitMQ開發(fā)實(shí)戰(zhàn)詳解

    Spring Boot整合RabbitMQ開發(fā)實(shí)戰(zhàn)詳解

    這篇文章主要介紹了Spring Boot整合RabbitMQ開發(fā)實(shí)戰(zhàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • 解決使用gateway后靜態(tài)資源失效的問題

    解決使用gateway后靜態(tài)資源失效的問題

    這篇文章主要介紹了解決使用gateway后靜態(tài)資源失效的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • EasyExcel自定義導(dǎo)出列和順序?qū)嵗a

    EasyExcel自定義導(dǎo)出列和順序?qū)嵗a

    這篇文章主要給大家介紹了關(guān)于EasyExcel自定義導(dǎo)出列和順序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java視頻斷點(diǎn)上傳的實(shí)現(xiàn)示例

    Java視頻斷點(diǎn)上傳的實(shí)現(xiàn)示例

    斷點(diǎn)續(xù)傳指的是在下載或上傳時(shí),將下載或上傳任務(wù)人為的劃分為幾個(gè)部分,本文主要介紹了Java視頻斷點(diǎn)上傳的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05

最新評論