Java Durid进行JDBC连接详解

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

    总结

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

    本文转自网络,如有侵权请联系客服删除。