TabooLib v4.6-R4
+ SQL update.
This commit is contained in:
parent
9ae4c0701e
commit
271f1b56b0
@ -38,6 +38,7 @@ public class TabooLibLoader implements Listener {
|
|||||||
static TabooLibDeprecated tabooLibDeprecated;
|
static TabooLibDeprecated tabooLibDeprecated;
|
||||||
static Map<String, List<Class>> pluginClasses = Maps.newHashMap();
|
static Map<String, List<Class>> pluginClasses = Maps.newHashMap();
|
||||||
static List<Loader> loaders = Lists.newArrayList();
|
static List<Loader> loaders = Lists.newArrayList();
|
||||||
|
static List<Runnable> tasks = Lists.newArrayList();
|
||||||
|
|
||||||
static void setup() {
|
static void setup() {
|
||||||
testInternet();
|
testInternet();
|
||||||
@ -56,6 +57,15 @@ public class TabooLibLoader implements Listener {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
Bukkit.getScheduler().runTask(TabooLib.instance(), () -> {
|
||||||
|
for (Runnable task : tasks) {
|
||||||
|
try {
|
||||||
|
task.run();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static void unregister() {
|
static void unregister() {
|
||||||
@ -80,6 +90,10 @@ public class TabooLibLoader implements Listener {
|
|||||||
return classes == null ? new ArrayList<>() : new ArrayList<>(classes);
|
return classes == null ? new ArrayList<>() : new ArrayList<>(classes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void runTaskOnEnabled(Runnable runnable) {
|
||||||
|
tasks.add(runnable);
|
||||||
|
}
|
||||||
|
|
||||||
static boolean isLoader(Class pluginClass) {
|
static boolean isLoader(Class pluginClass) {
|
||||||
return !Loader.class.equals(pluginClass) && Loader.class.isAssignableFrom(pluginClass);
|
return !Loader.class.equals(pluginClass) && Loader.class.isAssignableFrom(pluginClass);
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package me.skymc.taboolib.mysql.builder;
|
package me.skymc.taboolib.mysql.builder;
|
||||||
|
|
||||||
import com.ilummc.tlib.util.Strings;
|
import com.ilummc.tlib.util.Strings;
|
||||||
|
import me.skymc.taboolib.string.ArrayUtils;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author sky
|
* @Author sky
|
||||||
@ -19,6 +22,7 @@ public class SQLHost {
|
|||||||
private String database;
|
private String database;
|
||||||
private Plugin plugin;
|
private Plugin plugin;
|
||||||
private boolean autoClose;
|
private boolean autoClose;
|
||||||
|
private List<String> flags = ArrayUtils.asList("characterEncoding=utf-8", "useSSL=false");
|
||||||
|
|
||||||
public SQLHost(ConfigurationSection section, Plugin plugin) {
|
public SQLHost(ConfigurationSection section, Plugin plugin) {
|
||||||
this(section, plugin, false);
|
this(section, plugin, false);
|
||||||
@ -70,14 +74,26 @@ public class SQLHost {
|
|||||||
return autoClose;
|
return autoClose;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> getFlags() {
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
public String getConnectionUrl() {
|
public String getConnectionUrl() {
|
||||||
return Strings.replaceWithOrder("jdbc:mysql://{0}:{1}/{2}?characterEncoding=utf-8&useSSL=false", this.host, this.port, this.database);
|
return Strings.replaceWithOrder("jdbc:mysql://{0}:{1}/{2}" + getFlagsInUrl(), this.host, this.port, this.database);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getConnectionUrlSimple() {
|
public String getConnectionUrlSimple() {
|
||||||
return Strings.replaceWithOrder("jdbc:mysql://{0}:{1}/{2}", this.host, this.port, this.database);
|
return Strings.replaceWithOrder("jdbc:mysql://{0}:{1}/{2}", this.host, this.port, this.database);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getFlagsInUrl() {
|
||||||
|
if (flags.isEmpty()) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
String collect = flags.stream().map(f -> f + "&").collect(Collectors.joining());
|
||||||
|
return "?" + collect.substring(0, collect.length() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (this == o) {
|
if (this == o) {
|
||||||
|
@ -64,28 +64,18 @@ public class HikariHandler {
|
|||||||
config.setJdbcUrl(sqlHost.getConnectionUrl());
|
config.setJdbcUrl(sqlHost.getConnectionUrl());
|
||||||
config.setUsername(sqlHost.getUser());
|
config.setUsername(sqlHost.getUser());
|
||||||
config.setPassword(sqlHost.getPassword());
|
config.setPassword(sqlHost.getPassword());
|
||||||
config.setConnectionTestQuery("SELECT 1");
|
|
||||||
config.setAutoCommit(settings.getBoolean("DefaultSettings.AutoCommit", true));
|
config.setAutoCommit(settings.getBoolean("DefaultSettings.AutoCommit", true));
|
||||||
config.setMinimumIdle(settings.getInt("DefaultSettings.MinimumIdle", 1));
|
config.setMinimumIdle(settings.getInt("DefaultSettings.MinimumIdle", -1));
|
||||||
config.setMaximumPoolSize(settings.getInt("DefaultSettings.MaximumPoolSize", 10));
|
config.setMaximumPoolSize(settings.getInt("DefaultSettings.MaximumPoolSize", 10));
|
||||||
config.setValidationTimeout(settings.getInt("DefaultSettings.ValidationTimeout", 3000));
|
config.setValidationTimeout(settings.getInt("DefaultSettings.ValidationTimeout", 5000));
|
||||||
config.setConnectionTimeout(settings.getInt("DefaultSettings.ConnectionTimeout", 10000));
|
config.setConnectionTimeout(settings.getInt("DefaultSettings.ConnectionTimeout", 30000));
|
||||||
config.setIdleTimeout(settings.getInt("DefaultSettings.IdleTimeout", 60000));
|
config.setIdleTimeout(settings.getInt("DefaultSettings.IdleTimeout", 600000));
|
||||||
config.setMaxLifetime(settings.getInt("DefaultSettings.MaxLifetime", 60000));
|
config.setMaxLifetime(settings.getInt("DefaultSettings.MaxLifetime", 1800000));
|
||||||
|
if (settings.contains("DefaultSettings.ConnectionTestQuery")) {
|
||||||
|
config.setConnectionTestQuery(settings.getString("DefaultSettings.ConnectionTestQuery"));
|
||||||
|
}
|
||||||
if (settings.contains("DefaultSettings.DataSourceProperty")) {
|
if (settings.contains("DefaultSettings.DataSourceProperty")) {
|
||||||
settings.getConfigurationSection("DefaultSettings.DataSourceProperty").getKeys(false).forEach(key -> config.addDataSourceProperty(key, settings.getString("DefaultSettings.DataSourceProperty." + key)));
|
settings.getConfigurationSection("DefaultSettings.DataSourceProperty").getKeys(false).forEach(key -> config.addDataSourceProperty(key, settings.getString("DefaultSettings.DataSourceProperty." + key)));
|
||||||
} else {
|
|
||||||
config.addDataSourceProperty("cachePrepStmts", "true");
|
|
||||||
config.addDataSourceProperty("prepStmtCacheSize", "250");
|
|
||||||
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
|
|
||||||
config.addDataSourceProperty("useServerPrepStmts", "true");
|
|
||||||
config.addDataSourceProperty("useLocalSessionState", "true");
|
|
||||||
config.addDataSourceProperty("useLocalTransactionState", "true");
|
|
||||||
config.addDataSourceProperty("rewriteBatchedStatements", "true");
|
|
||||||
config.addDataSourceProperty("cacheResultSetMetadata", "true");
|
|
||||||
config.addDataSourceProperty("cacheServerConfiguration", "true");
|
|
||||||
config.addDataSourceProperty("elideSetAutoCommits", "true");
|
|
||||||
config.addDataSourceProperty("maintainTimeStats", "false");
|
|
||||||
}
|
}
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
@ -1,32 +1,32 @@
|
|||||||
# 默认连接池配置
|
# 默认连接池配置
|
||||||
DefaultSettings:
|
DefaultSettings:
|
||||||
DriverClassName: 'com.mysql.jdbc.Driver'
|
DriverClassName: 'com.mysql.jdbc.Driver'
|
||||||
|
# 自动提交从池中返回的连接
|
||||||
AutoCommit: true
|
AutoCommit: true
|
||||||
|
# 池中维护的最小空闲连接数
|
||||||
MinimumIdle: 1
|
MinimumIdle: 1
|
||||||
# 连接池大小
|
# 池中最大连接数,包括闲置和使用中的连接
|
||||||
MaximumPoolSize: 10
|
MaximumPoolSize: 10
|
||||||
# 用来指定验证连接有效性的超时时间(毫秒/默认: 5秒)
|
# 用来指定验证连接有效性的超时时间
|
||||||
ValidationTimeout: 3000
|
ValidationTimeout: 5000
|
||||||
# 等待连接池分配连接的最大时长(毫秒/默认: 30秒)
|
# 等待来自池的连接的最大毫秒数
|
||||||
# 超过这个时长还没可用的连接则发生 SQLException
|
ConnectionTimeout: 30000
|
||||||
ConnectionTimeout: 10000
|
# 一个连接idle状态的最大时长,超时则被释放
|
||||||
# 一个连接idle状态的最大时长(毫秒/默认: 10分钟),超时则被释放
|
IdleTimeout: 600000
|
||||||
IdleTimeout: 60000
|
# 一个连接的生命时长,超时而且没被使用则被释放
|
||||||
# 一个连接的生命时长(毫秒/默认: 30分钟),超时而且没被使用则被释放
|
MaxLifetime: 1800000
|
||||||
MaxLifetime: 60000
|
# 如果您的驱动程序支持JDBC4,我们强烈建议您不要设置此属性
|
||||||
# 是否自定义配置,为true时下面两个参数才生效
|
ConnectionTestQuery: SELECT 1
|
||||||
DataSourceProperty:
|
# 其他自定义配置
|
||||||
cachePrepStmts: true
|
DataSourceProperty: {}
|
||||||
# 连接池大小默认25,官方推荐250-500
|
# cachePrepStmts: true
|
||||||
prepStmtCacheSize: 250
|
# prepStmtCacheSize: 250
|
||||||
# 单条语句最大长度默认256,官方推荐2048
|
# prepStmtCacheSqlLimit: 2048
|
||||||
prepStmtCacheSqlLimit: 2048
|
# useServerPrepStmts: true
|
||||||
# 新版本MySQL支持服务器端准备,开启能够得到显著性能提升
|
# useLocalSessionState: true
|
||||||
useServerPrepStmts: true
|
# useLocalTransactionState: true
|
||||||
useLocalSessionState: true
|
# rewriteBatchedStatements: true
|
||||||
useLocalTransactionState: true
|
# cacheResultSetMetadata: true
|
||||||
rewriteBatchedStatements: true
|
# cacheServerConfiguration: true
|
||||||
cacheResultSetMetadata: true
|
# elideSetAutoCommits: true
|
||||||
cacheServerConfiguration: true
|
# maintainTimeStats: false
|
||||||
elideSetAutoCommits: true
|
|
||||||
maintainTimeStats: false
|
|
Loading…
Reference in New Issue
Block a user