大阔
本帖最后由 大阔 于 2020-8-3 23:31 编辑

1、前言
  • HikariCP是一款高性能的JDBC连接池组件.凭借其体积小性能优简单可靠的特点深受MC插件开发者的喜爱.
  • 本文观看需要有一定JDBC基础


2、HikariCP搭配MC插件使用详解

首先使用maven引入HikariCP依赖及MySQL连接驱动依赖 大部分核心中会有mysql的驱动依赖所以不需要打包出去
  1.          <dependency>
  2.              <groupId>com.zaxxer</groupId>
  3.              <artifactId>HikariCP</artifactId>
  4.              <version>3.4.5</version>
  5.              <scope>compile</scope>
  6.          </dependency>
  7.          <dependency>
  8.              <groupId>mysql</groupId>
  9.              <artifactId>mysql-connector-java</artifactId>
  10.              <version>5.1.48</version>
  11.              <scope>provided</scope>
  12.          </dependency>
复制代码

如果没有使用maven构建项目,手动下载引入即可。

为了方便插件使用服主更方便的控制HikariCP的参数,先将需要的参数写在配置文件中。
  1.   HikariCP:
  2.     connectionTimeout: 30000
  3.     #连接超时时间 默认值:30000(30秒)
  4.     minimumIdle: 10
  5.     #最小空闲连接数
  6.     maximumPoolSize: 50
  7.     #池允许达到的最大大小,包括空闲和正在使用的连接
  8.   Mysql:
  9.     address: localhost
  10.     port: 3306
  11.     database: test
  12.     user: root
  13.     password: 123456
复制代码

2.1、新建一个工具类(HikariCPUtils)
首先在工具类中写入一个静态方法获取配置文件中的配置,并一一放入HikariConfig对象中,这里的HikariConfig为HikariCP的配置对象,再使用HikariConfig对象得到HikariDataSource对象。


接着写一个获取连接的方法




在主类中onEnable()方法中需要调用一下setSqlConnectionPool();

这样做的目的是为了让静态资源只在开服的时候加载一次,可以避免不必要的资源浪费

2.2、编写JDBC操作数据库代码
1.新建一个数据表实体类

2.编写数据库操作类


这中间的代码不理解的可以去看一下JDBC基础


到此为止MC插件使用HikariCP连接池的代码就写完了,我们可以写一个测试方法试一下


在onEnable注册一个命令


在命令方法中调用一下sql类中的方法





编译插件,放入测试环境运行
当你的控制台提醒下面这两句时说明你的HikariCP配置没有问题,可以使用


在控制台中输入test测试一下


经测试没有任何问题




常见问题:
  • 驱动程序没有收到来自服务器的任何数据包


    解决办法:检查JDBCURL是否正确

  • 多次频繁输出信息


解决办法:请不要close HikariDataSource



3、HikariCP基本配置详解

3.1、主要配置

1.DirverClassName 驱动类名
2.jdbcUrl jdbc连接所需要的url连接,通常需要加入很多参数,在我上面的介绍中也有写一些参数
3.username  jdbc连接所需要的用户名
4.password  jdbc连接所需要的密码

3.2、常用配置

1.autoCommit 自动提交事务,关于事务还是推荐有能力的开发者手动写入事务回滚以避免不必要的错误,如果你问事务是干什么用的,请自行学习jdbc基础
2.
connectionTimeout 最大等待延迟,如果在没有可用连接的情况下超过此时间,则会抛出SQLException最低可接受的连接超时时间为250 ms。 默认值:30000(30秒)
3.idleTimeout 允许连接在池中闲置的最长时间 允许的最小值是10000ms(10秒)。 默认值:600000(10分钟)
4.maxLifetime 连接池中连接的最大生存期 默认值:1800000(30分钟)
5.connectionTestQuery 如果你的驱动程序支持JDBC4,建议不要设置此属性 在连接从池中获得连接以确认与数据库的连接仍然存在之前将要执行的查询
6.minimumIdle 最小空闲连接数,请将此属性写入配置文件中以方便服主拓展
使用需求  默认值10
7.maximumPoolSize 最**接数包括空闲及正在使用的连接 请将此属性也写入配置文件中以方便服主拓展使用需求  默认值10
8.poolName 连接池用户自定义名称  默认:自动生成



此教程使用的目录结构


请各位开发者根据自己插件的需求量选择使用数据库连接池
如果教程中有哪些描述不当的地方请多多见谅,第一次写教程类帖子,如果代码中有需要改进的地方欢迎提出

HikariCP官方GItHub
HikariCP码云







来自群组: Server CT

many先生
写的很棒,感谢楼主教程

汤圆宝宝
很好用,谢谢楼主,mcbbs有你更精彩