Hikari 来自日文,是“光”的意思。作者估计是为了借助这个词来暗示这个CP速度飞快!
这个产品的口号是“快速、简单、可靠”。
不再过多介绍了,有兴趣的朋友可以访问:https://github.com/brettwooldridge/HikariCP/wiki
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); } }
分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。