號稱全網最快的數據庫鏈接池HikariCP的工具類開發-HikariCPUtils

 Hikari 來自日文,是「光」的意思。做者估計是爲了藉助這個詞來暗示這個CP速度飛快!java

這個產品的口號是「快速、簡單、可靠」。mysql

再也不過多介紹了,有興趣的朋友能夠訪問:https://github.com/brettwooldridge/HikariCP/wikigit

目錄github

1.編寫工具類sql

2.編寫配置文件:hikaricp.properties數據庫

3.編寫SQl數據:apache

4.編寫實體類:ide

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)諮詢。
 

本文同步分享在 博客「楊校」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索