号称全网最快的数据库连接池HikariCP的工具类开发-HikariCPUtils

 Hikari 来自日文,是“光”的意思。作者估计是为了借助这个词来暗示这个CP速度飞快!

这个产品的口号是“快速、简单、可靠”。

不再过多介绍了,有兴趣的朋友可以访问:https://github.com/brettwooldridge/HikariCP/wiki

目录

1.编写工具类

2.编写配置文件:hikaricp.properties

3.编写SQl数据:

4.编写实体类:

5.编写测试类:TestDataByHikaricp


1.编写工具类

package cn.javabs.school.util;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.Test;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

/**
 * Hikaricp数据库连接池工具类的设计
 * @author Mryang 
 */
public class HikaricpUtils {

    // 定义HikariDataSource类型的dataSource 
        // 注意: 因为HikariDataSource类 实现了DataSource 接口。 因此 dataSource 即是HikariDataSource类型也是DataSource类型
    public  static HikariDataSource dataSource;

    /**
     * 获取数据源
     * @return
     * @throws SQLException
     * @throws IOException
     */
    public static DataSource getDataSource()  {

        try {
            // 因为dataSource是全局变量、默认初始化值为null 
            if (dataSource == null){
                // 通过字节输入流 读取 配置文件  hikaricp.properties
                InputStream is = HikaricpUtils.class.getClassLoader().getResourceAsStream("hikaricp.properties");
                // 因为HikariConfig类不可以加载io,但是可以加载Properties。因此:将输入流is封装到props
                Properties props = new Properties();
                props.load(is);
                // 再将封装好的props 传入到HikariConfig 类中,得到 config对象
                HikariConfig config = new HikariConfig(props);
                // 将config对象传入给HikariDataSource ,返回dataSource
                dataSource = new HikariDataSource(config);
            }
            // 返回dataSource
            return  dataSource;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }

    /**
     * 通过数据源获取连接
     * @return
     * @throws SQLException
     */
    public static  Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }
}

2.编写配置文件:hikaricp.properties

配置文件密码为:hikaricp.properties

# 数据库驱动|不填写HikariCp会自动识别
driverClassName=com.mysql.jdbc.Driver
# 访问数据库连接
jdbcUrl=jdbc:mysql://localhost:3306/hikaricp-data
# 数据库用户名
username=root
# 数据库密码
password=sorry
# 最大连接数
maximumPoolSize=30
# 连接池空闲连接的最小数量
minimumIdle=5
# 开启事务自动提交
autoCommit=true
# 是否自定义配置,为true时下面两个参数才生效
dataSource.cachePrepStmts=true
# 连接池大小默认25,官方推荐250-500
dataSource.prepStmtCacheSize=250
# 单条语句最大长度默认256,官方推荐2048
dataSource.prepStmtCacheSqlLimit=2048

3.编写SQl数据:

create database hikaricp-data;
use hikaricp-data;
create table user(
    id int primary key auto_increment,
    username varchar(50) not null unique,
    password varchar(50) not null
);
insert into user(id,username,password) values('1001','wangcai','wangcai123');
insert into user(id,username,password) values('1002','xiaoqiang','xiaoqiang123');
insert into user(id,username,password) values('1003','0927','0927');
insert into user(id,username,password) values('1004','baihu','baihu');
insert into user(id,username,password) values('1005','xingxing','xingxing');

4.编写实体类:

public class User {
    private Integer id;
    private  String username;
    private  String password;

     public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                
                '}';
    }
        
}

5.编写测试类:TestDataByHikaricp

package cn.javabs.school.test;

import cn.javabs.school.entity.User;
import cn.javabs.school.util.HikaricpUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.junit.Test;

import java.io.IOException;
import java.sql.SQLException;

public class TestDataByHikaricp {

    @Test
    public void  testHikariCp() throws SQLException, IOException {
        User user = new User();
        QueryRunner qr =  new QueryRunner(HikaricpUtils.getDataSource());
        User u = qr.query("select * from user where id=1005", new BeanHandler<User>(User.class));
        System.out.println(u);
    }
}

 

作者: 杨校

出处: https://mryang.blog.csdn.net

Java互联网交流学习群:827829292

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨校

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值