druid连接池_工具类

简介: druid连接池_工具类

  Druid连接池

Druid是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是目前最好的数据库连接池。
在功能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控,
可以很好的监控DB池连接和SQL的执行情况。
DRUID连接池使用的jar包: druid-1.0.31.jar

image.gif

Druid配置参数

druid.properties 文件内容:

#driverClassName这一项也可以不配置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/testtest
username=root
password=123456
#初始化建立连接个数
initialSize=5
#最大连接池数量
maxActive=10
#获取连接最大等待时间
maxWait=3000
#不在使用
maxIdle=6
#最小连接池数量
minIdle=3

image.gif

连接池工具类使用

创建数据表文件

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `gender` tinyint(255) DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

image.gif

工具类

package utilw;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidAbstractDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
/**
 * @author rodert
 * @category druid连接池工具类
 * */
public class DruidDataSourceUtils {
    private static DataSource ds;
    /** 加载配置文件 */
    static {
        try {
            Properties info = new Properties();
            // 加载类路径下,配置文件
            info.load(DruidDataSourceUtils.class
                    .getResourceAsStream("/druid.properties"));
            // 读取属性文件,创建连接池
            ds = DruidDataSourceFactory.createDataSource(info);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
    public static DataSource getDataSource() {
        return ds;
    }
    public static Connection getConnection() {
        try {
            return (Connection) ds.getConnection();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            // e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    /** 释放连接资源 */
    public static void close(Connection connection, Statement statement,
            ResultSet resultSet) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    public static void close(Connection connection, Statement statement) {
        close(connection, statement, null);
    }
    //插入一条数据
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement statement = null;
        int row = 0;
        try {
            connection = DruidDataSourceUtils.getConnection();
            String sql = "insert into student values(null,?,?,?)";
            statement = connection.prepareStatement(sql);
            statement.setString(1, "张飞");
            statement.setInt(2, 1);
            statement.setString(3, "199-03-12");
            // 使用executeUpdate()写入数据库
            row = statement.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            DruidDataSourceUtils.close(connection, statement);
        }
        System.out.println("添加了:" + row);
    }
}

image.gif

结果展示

image.gif


image.gifimage.png

image.gif


更多工具类,关注文章后续分析


目录
相关文章
|
监控 算法 Go
Golang深入浅出之-Go语言中的服务熔断、降级与限流策略
【5月更文挑战第4天】本文探讨了分布式系统中保障稳定性的重要策略:服务熔断、降级和限流。服务熔断通过快速失败和暂停故障服务调用来保护系统;服务降级在压力大时提供有限功能以保持整体可用性;限流控制访问频率,防止过载。文中列举了常见问题、解决方案,并提供了Go语言实现示例。合理应用这些策略能增强系统韧性和可用性。
1268 0
IDEA 降级gradle插件教程
IDEA 降级gradle插件教程
2020 0
IDEA 降级gradle插件教程
|
安全 Java Linux
ElasticSearch下载与安装
ElasticSearch下载与安装
3652 0
ElasticSearch下载与安装
|
11月前
|
人工智能 测试技术 API
Windows用户必备:Postman v11详细安装指南与API测试入门教程(附官网下载
Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试。2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能,适用于前后端分离开发、自动化测试、接口文档自动生成及团队协作共享API资源。本文详细介绍Postman的软件定位、核心功能、安装步骤、首次配置、基础使用及常见问题解答,帮助用户快速上手并高效利用该工具进行API开发与测试。
|
开发者 异构计算
现在,一行命令使用Ollama运行任意魔搭GGUF模型
为了让开发者更方便地把这些模型用起来,社区最近支持了Ollama框架和ModelScope平台的链接,通过简单的 ollama run命令,就能直接加载运行ModelScope模型库上的GGUF模型。
|
Linux 数据库 容器
Centos中将UTC的时区改为CTS时区
通过以上步骤,您就可以顺利地在CentOS系统中完成时区从UTC到中国标准时间(Asia/Shanghai)的更改了。
734 1
|
机器学习/深度学习 数据可视化 算法
利用 XGBoost 进行时间序列预测
利用 XGBoost 进行时间序列预测
1088 0
|
NoSQL Redis 数据库
Redis Windows版下载,带安装包
文章提供了Windows版Redis的下载和安装指南,包括如何解压、启动Redis服务以及连接到Redis数据库。
6118 0
Redis Windows版下载,带安装包
|
前端开发 JavaScript API
现代Web开发中的前后端分离架构
本篇文章探讨了前后端分离架构在现代Web开发中的应用与优势。
|
SQL 资源调度 大数据
公共大数据集群中如何配置 YARN 的公平调度器和容量调度器
公共大数据集群中如何配置 YARN 的公平调度器和容量调度器
公共大数据集群中如何配置 YARN 的公平调度器和容量调度器