mirror of
https://github.com/CarmJos/EasySQL.git
synced 2024-09-19 13:25:47 +00:00
[ci skip] docs(usage): 添加文档 在小项目中推荐使用的数据库表实现方案 。
This commit is contained in:
parent
daa430cb14
commit
c79d833d04
@ -5,10 +5,19 @@
|
|||||||
|
|
||||||
## 目录
|
## 目录
|
||||||
|
|
||||||
- [Bob的EasySQL之旅(HikariCP)](USAGE-HIKARI.md) `@Ghost-Chu`
|
### 文章
|
||||||
|
|
||||||
|
- [Bob的EasySQL之旅(HikariCP)](USAGE-HIKARI.md) `by @Ghost-Chu`
|
||||||
|
- [在**小项目中**推荐使用的**数据库表**实现方案](USAGE-TABLE.md) `by @CarmJos`
|
||||||
|
|
||||||
|
### 视频
|
||||||
|
|
||||||
|
- [EasySql快速操作Mysql数据库:我的世界插件开发](https://www.bilibili.com/video/BV1w34y1p7Xs) `by @Shinyoki`
|
||||||
|
|
||||||
## 实例项目
|
## 实例项目
|
||||||
以下是一些实例项目,可供各位参考。
|
以下是一些实例项目,可供各位参考。
|
||||||
|
|
||||||
- UltraDepository 超级仓库插件 `@CarmJos`
|
- UltraDepository 超级仓库插件 `@CarmJos`
|
||||||
- [storage/MySQLStorage](https://github.com/CarmJos/UltraDepository/blob/master/src/main/java/cc/carm/plugin/ultradepository/storage/impl/MySQLStorage.java)
|
- [storage/MySQLStorage](https://github.com/CarmJos/UltraDepository/blob/master/src/main/java/cc/carm/plugin/ultradepository/storage/impl/MySQLStorage.java)
|
||||||
|
- QuickShop-Hikari 快速商店插件 `@Ghost-Chu`
|
||||||
|
- [database/](https://github.com/Ghost-chu/QuickShop-Hikari/tree/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database)
|
52
demo/src/main/java/DataTables1.java
Normal file
52
demo/src/main/java/DataTables1.java
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
import cc.carm.lib.easysql.api.SQLManager;
|
||||||
|
import cc.carm.lib.easysql.api.SQLTable;
|
||||||
|
import cc.carm.lib.easysql.api.enums.IndexType;
|
||||||
|
import cc.carm.lib.easysql.api.enums.NumberType;
|
||||||
|
import cc.carm.lib.easysql.api.table.NamedSQLTable;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public enum DataTables1 {
|
||||||
|
|
||||||
|
DATA(SQLTable.of("data", (table) -> {
|
||||||
|
table.addAutoIncrementColumn("id", true);
|
||||||
|
table.addColumn("user", "INT UNSIGNED NOT NULL");
|
||||||
|
table.addColumn("content", "TEXT NOT NULL");
|
||||||
|
table.addColumn("time", "DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP");
|
||||||
|
})),
|
||||||
|
|
||||||
|
USER(SQLTable.of("user", (table) -> {
|
||||||
|
table.addAutoIncrementColumn("id", NumberType.INT, true, true);
|
||||||
|
table.addColumn("uuid", "VARCHAR(32) NOT NULL UNIQUE KEY");
|
||||||
|
table.addColumn("username", "VARCHAR(16) NOT NULL");
|
||||||
|
table.addColumn("age", "TINYINT NOT NULL DEFAULT 1");
|
||||||
|
table.addColumn("email", "VARCHAR(32)");
|
||||||
|
table.addColumn("phone", "VARCHAR(16)");
|
||||||
|
table.addColumn("registerTime", "DATETIME NOT NULL");
|
||||||
|
table.setIndex("username", IndexType.UNIQUE_KEY); // 添加唯一索引
|
||||||
|
table.setIndex(IndexType.INDEX, "contact", "email", "phone"); //添加联合索引 (示例)
|
||||||
|
}));
|
||||||
|
|
||||||
|
private final NamedSQLTable table;
|
||||||
|
|
||||||
|
DataTables1(NamedSQLTable table) {
|
||||||
|
this.table = table;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NamedSQLTable get() {
|
||||||
|
return this.table;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void initialize(@NotNull SQLManager manager, @Nullable String tablePrefix) {
|
||||||
|
for (DataTables1 value : values()) {
|
||||||
|
try {
|
||||||
|
value.get().create(manager, tablePrefix);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
// 提示异常
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
69
demo/src/main/java/DataTables2.java
Normal file
69
demo/src/main/java/DataTables2.java
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
import cc.carm.lib.easysql.api.SQLManager;
|
||||||
|
import cc.carm.lib.easysql.api.SQLTable;
|
||||||
|
import cc.carm.lib.easysql.api.builder.TableCreateBuilder;
|
||||||
|
import cc.carm.lib.easysql.api.enums.IndexType;
|
||||||
|
import cc.carm.lib.easysql.api.enums.NumberType;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public enum DataTables2 implements SQLTable {
|
||||||
|
|
||||||
|
USER((table) -> {
|
||||||
|
table.addAutoIncrementColumn("id", NumberType.INT, true, true);
|
||||||
|
table.addColumn("uuid", "VARCHAR(32) NOT NULL UNIQUE KEY");
|
||||||
|
table.addColumn("username", "VARCHAR(16) NOT NULL");
|
||||||
|
table.addColumn("age", "TINYINT NOT NULL DEFAULT 1");
|
||||||
|
table.addColumn("email", "VARCHAR(32)");
|
||||||
|
table.addColumn("phone", "VARCHAR(16)");
|
||||||
|
table.addColumn("registerTime", "DATETIME NOT NULL");
|
||||||
|
table.setIndex("username", IndexType.UNIQUE_KEY); // 添加唯一索引
|
||||||
|
table.setIndex(IndexType.INDEX, "contact", "email", "phone"); //添加联合索引 (示例)
|
||||||
|
});
|
||||||
|
|
||||||
|
private final Consumer<TableCreateBuilder> builder;
|
||||||
|
private @Nullable String tablePrefix;
|
||||||
|
private @Nullable SQLManager manager;
|
||||||
|
|
||||||
|
DataTables2(Consumer<TableCreateBuilder> builder) {
|
||||||
|
this.builder = builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable SQLManager getSQLManager() {
|
||||||
|
return this.manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getTableName() {
|
||||||
|
// 这里直接选择用枚举的名称作为table的主名称
|
||||||
|
return (tablePrefix != null ? tablePrefix : "") + name().toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean create(SQLManager sqlManager) throws SQLException {
|
||||||
|
return create(sqlManager, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean create(@NotNull SQLManager sqlManager, @Nullable String tablePrefix) throws SQLException {
|
||||||
|
if (this.manager == null) this.manager = sqlManager;
|
||||||
|
this.tablePrefix = tablePrefix;
|
||||||
|
|
||||||
|
TableCreateBuilder tableBuilder = sqlManager.createTable(getTableName());
|
||||||
|
if (builder != null) builder.accept(tableBuilder);
|
||||||
|
return tableBuilder.build().executeFunction(l -> l > 0, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void initialize(@NotNull SQLManager manager, @Nullable String tablePrefix) {
|
||||||
|
for (DataTables2 value : values()) {
|
||||||
|
try {
|
||||||
|
value.create(manager, tablePrefix);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
// 提示异常
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user