• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

大数据—— 使用 Durid 进行 JDBC 连接

互联网 diligentman 2小时前 2次浏览

目录

一、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]);
        }

    }
}


程序员灯塔
转载请注明原文链接:大数据—— 使用 Durid 进行 JDBC 连接
喜欢 (0)