Java Durid进行JDBC连接详解

 更新时间:2021年09月15日 09:15:38   作者:Vicky_Tang  
今天给大家带来的是关于Java的相关知识,文章简单使用Durid进行JDBC连接,文中有非常详细的介绍及代码示例,需要的朋友可以参考下

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

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • Java中常用的日期类图文详解

    Java中常用的日期类图文详解

    Java提供了Date类来处理日期、时间(此处的Date是指java.util包下的Date类,而不是java.sql包下的Date类),Date对象既包含日期,也包含时间,下面这篇文章主要给大家介绍了关于Java中常用的日期类的相关资料,需要的朋友可以参考下
    2022-11-11
  • SpringBoot添加SSL证书的方法

    SpringBoot添加SSL证书的方法

    HTTPS 实际上就是 HTTP + SSL,使我们的网站更加安全,地址栏上会有一把小锁。那么如何在SpringBoot添加SSL证书,下面就一起来了解一下
    2021-05-05
  • java编程实现国际象棋棋盘

    java编程实现国际象棋棋盘

    这篇文章主要为大家详细介绍了java编程实现国际象棋棋盘,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 详解Java的Hibernate框架中的缓存与原生SQL语句的使用

    详解Java的Hibernate框架中的缓存与原生SQL语句的使用

    这篇文章主要介绍了Java的Hibernate框架中的缓存与原生SQL语句的使用,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下
    2015-12-12
  • BeanUtils.copyProperties使用总结以及注意事项说明

    BeanUtils.copyProperties使用总结以及注意事项说明

    这篇文章主要介绍了BeanUtils.copyProperties使用总结以及注意事项说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • @RequestParam 和@RequestBody注解的区别解析

    @RequestParam 和@RequestBody注解的区别解析

    在 Spring MVC 中,我们可以使用 @RequestParam 和 @RequestBody 来获取请求参数,但它们在用法和作用上有一些区别,这篇文章主要介绍了@RequestParam 和@RequestBody注解的区别,需要的朋友可以参考下
    2023-06-06
  • SpringMVC 域对象共享数据的实现示例

    SpringMVC 域对象共享数据的实现示例

    本文主要介绍了SpringMVC 域对象共享数据的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务的方法(推荐)

    使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务的方法(推荐)

    在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求,具体内容详情大家参考下本文
    2018-01-01
  • java运行windows的cmd命令简单代码

    java运行windows的cmd命令简单代码

    这篇文章主要介绍了java运行windows的cmd命令简单代码,有需要的朋友可以参考一下
    2013-12-12
  • Java的HashMap源码解析

    Java的HashMap源码解析

    这篇文章主要介绍了Java的HashMap源码解析,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对是一个Node,后台是用一个Node数组来存放数据,这个Node数组就是HashMap的主干,需要的朋友可以参考下
    2023-11-11

最新评论