Hikari 来自日文,是“光”的意思。作者估计是为了借助这个词来暗示这个CP速度飞快!
这个产品的口号是“快速、简单、可靠”。
不再过多介绍了,有兴趣的朋友可以访问:https://github.com/brettwooldridge/HikariCP/wiki
目录
1.编写工具类
2.编写配置文件:hikaricp.properties
3.编写SQl数据:
4.编写实体类:
5.编写测试类:TestDataByHikaricp
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();
}
}
配置文件密码为: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
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');
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 + '\'' +
'}';
}
}
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.class));
System.out.println(u);
}
}
作者: 杨校
出处: https://mryang.blog.csdn.net
Java互联网交流学习群:827829292
分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件([email protected])咨询。