Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 354|回复: 2

[插件开发教程] [SCT]MC插件使用HikariCP连接池教程

[复制链接]
大阔 当前离线
积分
2602
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2015-1-4
查看详细资料
发表于 2020-8-3 23:29:21 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 大阔 于 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对象。
file_1596467098000.jpg

接着写一个获取连接的方法
image-20200803215459544.png



在主类中onEnable()方法中需要调用一下setSqlConnectionPool();
image-20200803215609125.png
这样做的目的是为了让静态资源只在开服的时候加载一次,可以避免不必要的资源浪费

2.2、编写JDBC操作数据库代码
1.新建一个数据表实体类
image-20200803223735110.png
2.编写数据库操作类
file_1596467098000.jpg

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


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


在onEnable注册一个命令
image-20200803223953015.png

在命令方法中调用一下sql类中的方法
image-20200803224010499.png




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

在控制台中输入test测试一下
image-20200803224200136.png

经测试没有任何问题




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

image-20200803224352485.png
    解决办法:检查JDBCURL是否正确

  • 多次频繁输出信息

image-20200803224120473.png
解决办法:请不要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 连接池用户自定义名称  默认:自动生成



此教程使用的目录结构
QQ截图20200803232155.png

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

HikariCP官方GItHub
HikariCP码云



YeSJTIPbx1kQB45.png



来自群组: Server CT

评分

参与人数 7人气 +10 金粒 +83 宝石 +10 收起 理由
乙烯_中国 + 10 MCBBS有你更精彩~
汤圆宝宝 + 1 + 8 MCBBS有你更精彩~
海螺螺 + 3 + 25 MCBBS有你更精彩~ 高亮奖励
X836696023 + 1 + 10 整挺好
冰星 + 1 SCT有你更精彩
主世界 + 2 支持SCT
tdiant + 2 + 40 赞!

查看全部评分

many先生 当前离线
积分
113
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-7-20
查看详细资料
发表于 2020-8-10 09:12:18 | 显示全部楼层
写的很棒,感谢楼主教程
回复

使用道具 举报

汤圆宝宝 当前离线
积分
2636
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2016-6-21
查看详细资料
发表于 2020-8-10 22:12:49 | 显示全部楼层
很好用,谢谢楼主,mcbbs有你更精彩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2020-10-31 07:03 , Processed in 0.053255 second(s), Total 18, Slave 16 queries, Release: Build.2020.10.30 1438, Gzip On, Redis On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表