文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java Durid进行JDBC连接详解

2024-04-02 19:55

关注

一、Druid简介

Druid是阿里开源的数据库连接池,作为后起之秀,性能比dbcp、c3p0更高,使用也越来越广泛。

当然Druid不仅仅是一个连接池,还有很多其他的功能。

二、Druid的优点

三、使用 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;

public class JDBCReadUtils implements Serializable {
    private static Logger logger = Logger.getLogger(JDBCReadUtils.class);
    
    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() {
    }
    
    public static JDBCReadUtils getInstance(String url) {
        if (instance == null) {
            synchronized (JDBCReadUtils.class) {
                if (instance == null) {
                    instance = new JDBCReadUtils(url);
                }
            }
        }
        return instance;
    }
    
    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;
    }
    
    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;
    }
    
    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]);
        }
    }
}

总结

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯