addAutoIncrementColumn(@NotNull String columnName) {
return addAutoIncrementColumn(columnName, NumberType.INT);
diff --git a/easysql-api/src/main/java/cc/carm/lib/easysql/api/builder/TableCreateBuilder.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/builder/TableCreateBuilder.java
index 9955319..930153c 100644
--- a/easysql-api/src/main/java/cc/carm/lib/easysql/api/builder/TableCreateBuilder.java
+++ b/easysql-api/src/main/java/cc/carm/lib/easysql/api/builder/TableCreateBuilder.java
@@ -84,45 +84,54 @@ public interface TableCreateBuilder extends SQLBuilder {
* 自增列强制要求为数字类型,非空,且为UNIQUE。
*
注意:一个表只允许有一个自增列!
*
- * @param columnName 列名
- * @param numberType 数字类型,若省缺则为 {@link NumberType#INT}
- * @param primary 是否为主键,若为false则设定为唯一键
- * @param unsigned 是否采用 UNSIGNED (即无负数,可以增加自增键的最高数,建议为true)
+ * @param columnName 列名
+ * @param numberType 数字类型,若省缺则为 {@link NumberType#INT}
+ * @param asPrimaryKey 是否为主键,若为false则设定为唯一键
+ * @param unsigned 是否采用 UNSIGNED (即无负数,可以增加自增键的最高数,建议为true)
* @return {@link TableCreateBuilder}
*/
- default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, @Nullable NumberType numberType,
- boolean primary, boolean unsigned) {
- return addColumn(columnName,
- (numberType == null ? NumberType.INT : numberType).name()
- + (unsigned ? " UNSIGNED " : " ")
- + "NOT NULL AUTO_INCREMENT " + (primary ? "PRIMARY KEY" : "UNIQUE KEY")
- );
- }
+ TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, @Nullable NumberType numberType,
+ boolean asPrimaryKey, boolean unsigned);
/**
- * 为该表添加一个自增主键列
+ * 为该表添加一个INT类型的自增主键列
*
自增列强制要求为数字类型,非空,且为UNIQUE。
*
注意:一个表只允许有一个自增列!
*
- * @param columnName 列名
- * @param numberType 数字类型,若省缺则为 {@link NumberType#INT}
+ * @param columnName 列名
+ * @param asPrimaryKey 是否为主键,若为false则设定为唯一键
+ * @param unsigned 是否采用 UNSIGNED (即无负数,可以增加自增键的最高数,建议为true)
* @return {@link TableCreateBuilder}
*/
- default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, @Nullable NumberType numberType) {
- return addAutoIncrementColumn(columnName, numberType, true, true);
+ default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName,
+ boolean asPrimaryKey, boolean unsigned) {
+ return addAutoIncrementColumn(columnName, NumberType.INT, asPrimaryKey, unsigned);
+ }
+
+
+ /**
+ * 为该表添加一个INT类型的自增列
+ *
自增列强制要求为数字类型,非空,且为UNIQUE。
+ *
注意:一个表只允许有一个自增列!
+ *
+ * @param columnName 列名
+ * @param asPrimaryKey 是否为主键,若为false则设定为唯一键
+ * @return {@link TableCreateBuilder}
+ */
+ default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, boolean asPrimaryKey) {
+ return addAutoIncrementColumn(columnName, asPrimaryKey, true);
}
/**
* 为该表添加一个INT类型的自增主键列
*
自增列强制要求为数字类型,非空,且为UNIQUE。
- *
本方法采用的类型为 INT 如有其他需要请自行使用 {@link #addAutoIncrementColumn(String, NumberType)} 方法。
*
注意:一个表只允许有一个自增列!
*
* @param columnName 列名
* @return {@link TableCreateBuilder}
*/
default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName) {
- return addAutoIncrementColumn(columnName, null);
+ return addAutoIncrementColumn(columnName, true);
}
/**
@@ -136,8 +145,8 @@ public interface TableCreateBuilder extends SQLBuilder {
* @param columnName 索引包含的列
* @return {@link TableCreateBuilder}
*/
- default TableCreateBuilder setIndex(@NotNull IndexType type,
- @NotNull String columnName) {
+ default TableCreateBuilder setIndex(@NotNull String columnName,
+ @NotNull IndexType type) {
return setIndex(type, null, columnName);
}
diff --git a/easysql-impl/pom.xml b/easysql-impl/pom.xml
index 3756013..343d0b7 100644
--- a/easysql-impl/pom.xml
+++ b/easysql-impl/pom.xml
@@ -5,7 +5,7 @@
easysql-parent
cc.carm.lib
- 0.3.0-SNAPSHOT
+ 0.3.0
4.0.0
diff --git a/easysql-impl/src/main/java/cc/carm/lib/easysql/builder/impl/TableAlterBuilderImpl.java b/easysql-impl/src/main/java/cc/carm/lib/easysql/builder/impl/TableAlterBuilderImpl.java
index b79278a..5bba24c 100644
--- a/easysql-impl/src/main/java/cc/carm/lib/easysql/builder/impl/TableAlterBuilderImpl.java
+++ b/easysql-impl/src/main/java/cc/carm/lib/easysql/builder/impl/TableAlterBuilderImpl.java
@@ -2,14 +2,14 @@ package cc.carm.lib.easysql.builder.impl;
import cc.carm.lib.easysql.action.SQLUpdateActionImpl;
import cc.carm.lib.easysql.api.SQLAction;
-import cc.carm.lib.easysql.api.builder.TableAlertBuilder;
+import cc.carm.lib.easysql.api.builder.TableAlterBuilder;
import cc.carm.lib.easysql.api.enums.IndexType;
import cc.carm.lib.easysql.builder.AbstractSQLBuilder;
import cc.carm.lib.easysql.manager.SQLManagerImpl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-public class TableAlterBuilderImpl extends AbstractSQLBuilder implements TableAlertBuilder {
+public class TableAlterBuilderImpl extends AbstractSQLBuilder implements TableAlterBuilder {
protected final @NotNull String tableName;
@@ -25,28 +25,28 @@ public class TableAlterBuilderImpl extends AbstractSQLBuilder implements TableAl
@Override
public SQLAction renameTo(@NotNull String newTableName) {
return new SQLUpdateActionImpl(getManager(),
- "ALERT TABLE `" + getTableName() + "` RENAME TO `" + newTableName + "`"
+ "ALTER TABLE `" + getTableName() + "` RENAME TO `" + newTableName + "`"
);
}
@Override
public SQLAction changeComment(@NotNull String newTableComment) {
return new SQLUpdateActionImpl(getManager(),
- "ALERT TABLE `" + getTableName() + "` COMMENT '" + newTableComment + "'"
+ "ALTER TABLE `" + getTableName() + "` COMMENT '" + newTableComment + "'"
);
}
@Override
public SQLAction setAutoIncrementIndex(int index) {
return new SQLUpdateActionImpl(getManager(),
- "ALERT TABLE `" + getTableName() + "` AUTO_INCREMENT=" + index
+ "ALTER TABLE `" + getTableName() + "` AUTO_INCREMENT=" + index
);
}
@Override
public SQLAction addIndex(@NotNull IndexType indexType, @NotNull String indexName, @NotNull String columnName, @NotNull String... moreColumns) {
return createAction(
- "ALERT TABLE `" + getTableName() + "` ADD "
+ "ALTER TABLE `" + getTableName() + "` ADD "
+ TableCreateBuilderImpl.buildIndexSettings(indexType, indexName, columnName, moreColumns)
);
}
@@ -54,63 +54,73 @@ public class TableAlterBuilderImpl extends AbstractSQLBuilder implements TableAl
@Override
public SQLAction dropIndex(@NotNull String indexName) {
return createAction(
- "ALERT TABLE `" + getTableName() + "` DROP INDEX `" + indexName + "`"
+ "ALTER TABLE `" + getTableName() + "` DROP INDEX `" + indexName + "`"
);
}
@Override
public SQLAction dropForeignKey(@NotNull String keySymbol) {
return createAction(
- "ALERT TABLE `" + getTableName() + "` DROP FOREIGN KEY `" + keySymbol + "`"
+ "ALTER TABLE `" + getTableName() + "` DROP FOREIGN KEY `" + keySymbol + "`"
);
}
@Override
public SQLAction dropPrimaryKey() {
return createAction(
- "ALERT TABLE `" + getTableName() + "` DROP PRIMARY KEY"
+ "ALTER TABLE `" + getTableName() + "` DROP PRIMARY KEY"
);
}
@Override
public SQLAction addColumn(@NotNull String columnName, @NotNull String settings, @Nullable String afterColumn) {
+ String orderSettings = null;
+ if (afterColumn != null) {
+ if (afterColumn.length() > 0) {
+ orderSettings = "AFTER `" + afterColumn + "`";
+ } else {
+ orderSettings = "FIRST";
+ }
+ }
+
return createAction(
- "ALERT TABLE `" + getTableName() + "` ADD `" + columnName + "` " + settings
+ "ALTER TABLE `" + getTableName() + "` ADD `" + columnName + "` " + settings
+ + (orderSettings != null ? " " + orderSettings : "")
);
}
@Override
public SQLAction renameColumn(@NotNull String columnName, @NotNull String newName) {
return createAction(
- "ALERT TABLE `" + getTableName() + "` RENAME COLUMN `" + columnName + "` TO `" + newName + "`"
+ "ALTER TABLE `" + getTableName() + "` RENAME COLUMN `" + columnName + "` TO `" + newName + "`"
);
}
@Override
public SQLAction modifyColumn(@NotNull String columnName, @NotNull String settings) {
return createAction(
- "ALERT TABLE `" + getTableName() + "` MODIFY COLUMN `" + columnName + "` " + settings
+ "ALTER TABLE `" + getTableName() + "` MODIFY COLUMN `" + columnName + "` " + settings
);
}
@Override
public SQLAction removeColumn(@NotNull String columnName) {
return createAction(
- "ALERT TABLE `" + getTableName() + "` DROP `" + columnName + "`"
+ "ALTER TABLE `" + getTableName() + "` DROP `" + columnName + "`"
);
}
@Override
public SQLAction setColumnDefault(@NotNull String columnName, @NotNull String defaultValue) {
return createAction(
- "ALERT TABLE `" + getTableName() + "` ALERT `" + columnName + "` SET DEFAULT " + defaultValue
+ "ALTER TABLE `" + getTableName() + "` ALTER `" + columnName + "` SET DEFAULT " + defaultValue
);
}
@Override
public SQLAction removeColumnDefault(@NotNull String columnName) {
return createAction(
- "ALERT TABLE `" + getTableName() + "` ALERT `" + columnName + "` DROP DEFAULT"
+ "ALTER TABLE `" + getTableName() + "` ALTER `" + columnName + "` DROP DEFAULT"
);
}
diff --git a/easysql-impl/src/main/java/cc/carm/lib/easysql/builder/impl/TableCreateBuilderImpl.java b/easysql-impl/src/main/java/cc/carm/lib/easysql/builder/impl/TableCreateBuilderImpl.java
index cc20776..16a4c86 100644
--- a/easysql-impl/src/main/java/cc/carm/lib/easysql/builder/impl/TableCreateBuilderImpl.java
+++ b/easysql-impl/src/main/java/cc/carm/lib/easysql/builder/impl/TableCreateBuilderImpl.java
@@ -5,6 +5,7 @@ import cc.carm.lib.easysql.api.action.SQLUpdateAction;
import cc.carm.lib.easysql.api.builder.TableCreateBuilder;
import cc.carm.lib.easysql.api.enums.ForeignKeyRule;
import cc.carm.lib.easysql.api.enums.IndexType;
+import cc.carm.lib.easysql.api.enums.NumberType;
import cc.carm.lib.easysql.builder.AbstractSQLBuilder;
import cc.carm.lib.easysql.manager.SQLManagerImpl;
import org.jetbrains.annotations.NotNull;
@@ -45,21 +46,15 @@ public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableC
StringBuilder createSQL = new StringBuilder();
createSQL.append("CREATE TABLE IF NOT EXISTS `").append(tableName).append("`");
createSQL.append("(");
- for (int i = 0; i < columns.size(); i++) {
- createSQL.append(columns.get(i));
- if (i != columns.size() - 1) createSQL.append(", ");
+ createSQL.append(String.join(", ", columns));
+ if (indexes.size() > 0) {
+ createSQL.append(", ");
+ createSQL.append(String.join(", ", indexes));
}
-
- for (int i = 0; i < indexes.size(); i++) {
- createSQL.append(indexes.get(i));
- if (i != indexes.size() - 1) createSQL.append(", ");
+ if (foreignKeys.size() > 0) {
+ createSQL.append(", ");
+ createSQL.append(String.join(", ", foreignKeys));
}
-
- for (int i = 0; i < foreignKeys.size(); i++) {
- createSQL.append(foreignKeys.get(i));
- if (i != foreignKeys.size() - 1) createSQL.append(", ");
- }
-
createSQL.append(") ").append(getTableSettings());
if (tableComment != null) {
@@ -75,6 +70,16 @@ public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableC
return this;
}
+ @Override
+ public TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, @Nullable NumberType numberType,
+ boolean asPrimaryKey, boolean unsigned) {
+ return addColumn(columnName,
+ (numberType == null ? NumberType.INT : numberType).name()
+ + (unsigned ? " UNSIGNED " : " ")
+ + "NOT NULL AUTO_INCREMENT " + (asPrimaryKey ? "PRIMARY KEY" : "UNIQUE KEY")
+ );
+ }
+
@Override
public TableCreateBuilder setIndex(@NotNull IndexType type, @Nullable String indexName,
@NotNull String columnName, @NotNull String... moreColumns) {
@@ -124,7 +129,7 @@ public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableC
}
protected static String buildIndexSettings(@NotNull IndexType indexType, @Nullable String indexName,
- @NotNull String columnName, @NotNull String... moreColumns) {
+ @NotNull String columnName, @NotNull String... moreColumns) {
StringBuilder indexBuilder = new StringBuilder();
diff --git a/easysql-impl/src/main/java/cc/carm/lib/easysql/manager/SQLManagerImpl.java b/easysql-impl/src/main/java/cc/carm/lib/easysql/manager/SQLManagerImpl.java
index d723358..8d1f843 100644
--- a/easysql-impl/src/main/java/cc/carm/lib/easysql/manager/SQLManagerImpl.java
+++ b/easysql-impl/src/main/java/cc/carm/lib/easysql/manager/SQLManagerImpl.java
@@ -130,7 +130,7 @@ public class SQLManagerImpl implements SQLManager {
}
@Override
- public TableAlertBuilder alterTable(@NotNull String tableName) {
+ public TableAlterBuilder alterTable(@NotNull String tableName) {
return new TableAlterBuilderImpl(this, tableName);
}
diff --git a/example/easysql-demo/pom.xml b/example/easysql-demo/pom.xml
index 52cff70..1895088 100644
--- a/example/easysql-demo/pom.xml
+++ b/example/easysql-demo/pom.xml
@@ -5,7 +5,7 @@
easysql-parent
cc.carm.lib
- 0.3.0-SNAPSHOT
+ 0.3.0
../../pom.xml
4.0.0
diff --git a/example/easysql-demo/src/main/java/EasySQLDemo.java b/example/easysql-demo/src/main/java/EasySQLDemo.java
index b4e3aa6..aa8b95a 100644
--- a/example/easysql-demo/src/main/java/EasySQLDemo.java
+++ b/example/easysql-demo/src/main/java/EasySQLDemo.java
@@ -27,7 +27,7 @@ public class EasySQLDemo {
.addColumn("phone", "VARCHAR(16)")
.addColumn("registerTime", "DATETIME NOT NULL")
// .addColumn("INDEX `phone`") // 原始方法添加索引
- .setIndex(IndexType.UNIQUE_KEY, "username") // 添加唯一索引
+ .setIndex("username", IndexType.UNIQUE_KEY) // 添加唯一索引
.setIndex(IndexType.INDEX, "contact", "email", "phone") //添加联合索引 (示例)
.build().execute(null /* 不处理错误 */);
diff --git a/example/easysql-test/pom.xml b/example/easysql-test/pom.xml
new file mode 100644
index 0000000..6d74022
--- /dev/null
+++ b/example/easysql-test/pom.xml
@@ -0,0 +1,130 @@
+
+
+
+ easysql-parent
+ cc.carm.lib
+ 0.3.0
+ ../../pom.xml
+
+ 4.0.0
+
+
+ 11
+ 11
+ UTF-8
+ UTF-8
+ true
+ true
+
+
+ easysql-test
+
+
+ ${project.parent.groupId}
+ easysql-hikaricp
+ ${project.version}
+ compile
+
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.25
+ compile
+
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.29
+ compile
+
+
+
+ org.apache.logging.log4j
+ log4j-api
+ 2.17.1
+ compile
+
+
+
+ org.apache.logging.log4j
+ log4j-core
+ 2.17.1
+ compile
+
+
+
+ org.apache.logging.log4j
+ log4j-slf4j-impl
+ 2.17.1
+ compile
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.2.3
+
+
+ package
+
+ shade
+
+
+
+
+
+
+ *:*
+
+ META-INF/MANIFEST.MF
+
+
+
+
+ true
+
+
+
+
+ maven-assembly-plugin
+
+
+ jar-with-dependencies
+
+
+
+ cc.carm.lib.easysql.testrunner.Main
+
+
+
+
+
+ make-assembly
+ package
+
+ assembly
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/EasySQLTest.java b/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/EasySQLTest.java
new file mode 100644
index 0000000..d9e21a5
--- /dev/null
+++ b/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/EasySQLTest.java
@@ -0,0 +1,36 @@
+package cc.carm.lib.easysql.testrunner;
+
+import cc.carm.lib.easysql.api.SQLManager;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+import java.sql.SQLException;
+
+public abstract class EasySQLTest {
+
+ @ApiStatus.OverrideOnly
+ public abstract void onTest(SQLManager sqlManager) throws SQLException;
+
+ public boolean executeTest(int index, SQLManager sqlManager) {
+ String testName = getClass().getSimpleName();
+
+ print(" #%s 测试 @%s 开始", index, testName);
+ long start = System.currentTimeMillis();
+
+ try {
+ onTest(sqlManager);
+ print(" #%s 测试 @%s 成功,耗时 %s ms。", index, testName, (System.currentTimeMillis() - start));
+ return true;
+ } catch (Exception exception) {
+ print(" #%s 测试 @%s 失败,耗时 %s ms。", index, testName, (System.currentTimeMillis() - start));
+ exception.printStackTrace();
+ return false;
+ }
+ }
+
+ protected static void print(@NotNull String format, Object... params) {
+ Main.print(format, params);
+ }
+
+
+}
diff --git a/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/Main.java b/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/Main.java
new file mode 100644
index 0000000..f460c32
--- /dev/null
+++ b/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/Main.java
@@ -0,0 +1,93 @@
+package cc.carm.lib.easysql.testrunner;
+
+import cc.carm.lib.easysql.EasySQL;
+import cc.carm.lib.easysql.api.SQLManager;
+import cc.carm.lib.easysql.testrunner.tests.TableAlterTest;
+import cc.carm.lib.easysql.testrunner.tests.TableCreateTest;
+import cc.carm.lib.easysql.testrunner.tests.TableRenameTest;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.Scanner;
+import java.util.Set;
+
+public class Main {
+
+ public static void main(String[] args) {
+ if (args.length < 4) {
+ print("请提供以下参数: 数据库地址 数据库用户名 数据库密码");
+ return;
+ }
+
+ SQLManager sqlManager;
+ try {
+ print("初始化 SQLManager...");
+ print("数据库驱动 %s", args[0]);
+ print("数据库地址 %s", args[1]);
+ print("数据库用户 %s", args[2]);
+ print("数据库密码 %s", args[3]);
+ sqlManager = EasySQL.createManager(args[0], args[1], args[2], args[3]);
+ sqlManager.setDebugMode(args.length > 4);
+ print("SQLManager 初始化完成!");
+ } catch (Exception exception) {
+ print("SQLManager 初始化失败,请检查数据库配置。");
+ exception.printStackTrace();
+ return;
+ }
+
+ print("加载测试类...");
+ Set tests = new LinkedHashSet<>();
+ tests.add(new TableCreateTest());
+ tests.add(new TableAlterTest());
+ tests.add(new TableRenameTest());
+
+ print("准备进行测试...");
+
+ int index = 1;
+ int success = 0;
+
+ Iterator testIterator = tests.iterator();
+
+ print("准备完成,请按回车键开始执行测试。");
+
+ while (testIterator.hasNext()) {
+ Scanner scanner = new Scanner(System.in);
+
+ if (scanner.nextLine() != null) {
+
+ EasySQLTest currentTest = testIterator.next();
+
+ if (currentTest.executeTest(index, sqlManager)) {
+ success++;
+ }
+
+ index++;
+ }
+
+ }
+
+ print(" ");
+ print("全部测试执行完毕,成功 %s 个,失败 %s 个。",
+ success, (tests.size() - success)
+ );
+
+ }
+
+
+ public static void print(@NotNull String format, Object... params) {
+ System.out.printf((format) + "%n", params);
+ }
+
+ public static @Nullable EasySQLTest cast(@NotNull Class> value) {
+ if (!EasySQLTest.class.isAssignableFrom(value)) return null;
+ try {
+ return (EasySQLTest) value.newInstance();
+ } catch (InstantiationException | IllegalAccessException e) {
+ return null;
+ }
+
+ }
+
+}
diff --git a/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/tests/TableAlterTest.java b/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/tests/TableAlterTest.java
new file mode 100644
index 0000000..b3f13bb
--- /dev/null
+++ b/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/tests/TableAlterTest.java
@@ -0,0 +1,35 @@
+package cc.carm.lib.easysql.testrunner.tests;
+
+import cc.carm.lib.easysql.api.SQLManager;
+import cc.carm.lib.easysql.api.enums.NumberType;
+import cc.carm.lib.easysql.testrunner.EasySQLTest;
+
+import java.sql.SQLException;
+
+public class TableAlterTest extends EasySQLTest {
+
+ @Override
+ public void onTest(SQLManager sqlManager) throws SQLException {
+
+ print(" 修改 test_user_table");
+ sqlManager.alterTable("test_user_table")
+ .addColumn("test", "VARCHAR(16) NOT NULL")
+ .execute();
+
+ sqlManager.alterTable("test_user_table")
+ .addColumn("test2", "VARCHAR(16) NOT NULL", "username")
+ .execute();
+
+
+ print(" 修改 test_user_info");
+ sqlManager.alterTable("test_user_info")
+ .addAutoIncrementColumn("num", NumberType.BIGINT, false, true)
+ .execute();
+
+ sqlManager.alterTable("test_user_info")
+ .addColumn("a", "VARCHAR(16) NOT NULL", "")
+ .execute();
+
+ }
+
+}
diff --git a/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/tests/TableCreateTest.java b/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/tests/TableCreateTest.java
new file mode 100644
index 0000000..bf9ac06
--- /dev/null
+++ b/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/tests/TableCreateTest.java
@@ -0,0 +1,38 @@
+package cc.carm.lib.easysql.testrunner.tests;
+
+import cc.carm.lib.easysql.api.SQLManager;
+import cc.carm.lib.easysql.api.enums.ForeignKeyRule;
+import cc.carm.lib.easysql.api.enums.IndexType;
+import cc.carm.lib.easysql.testrunner.EasySQLTest;
+
+import java.sql.SQLException;
+
+public class TableCreateTest extends EasySQLTest {
+
+ @Override
+ public void onTest(SQLManager sqlManager) throws SQLException {
+
+ print(" 创建 test_user_table");
+ sqlManager.createTable("test_user_table")
+ .addAutoIncrementColumn("id")
+ .addColumn("uuid", "VARCHAR(36) NOT NULL", "用户UUID")
+ .addColumn("username", "VARCHAR(16) NOT NULL", "用户名")
+ .addColumn("age", "TINYINT DEFAULT 0 NOT NULL", "年龄")
+
+ .setIndex("uuid", IndexType.UNIQUE_KEY)
+ .build().execute();
+
+ print(" 创建 test_user_info");
+ sqlManager.createTable("test_user_info")
+ .addColumn("uid", "INT UNSIGNED NOT NULL")
+ .addColumn("info", "TEXT", "相关信息")
+ .addForeignKey("uid", "user",
+ "test_user_table", "id",
+ ForeignKeyRule.CASCADE, ForeignKeyRule.CASCADE
+ )
+ .setIndex(IndexType.FULLTEXT_INDEX, "sign", "info")
+ .build().execute();
+
+ }
+
+}
diff --git a/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/tests/TableRenameTest.java b/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/tests/TableRenameTest.java
new file mode 100644
index 0000000..58fde99
--- /dev/null
+++ b/example/easysql-test/src/main/java/cc/carm/lib/easysql/testrunner/tests/TableRenameTest.java
@@ -0,0 +1,16 @@
+package cc.carm.lib.easysql.testrunner.tests;
+
+import cc.carm.lib.easysql.api.SQLManager;
+import cc.carm.lib.easysql.testrunner.EasySQLTest;
+
+import java.sql.SQLException;
+
+public class TableRenameTest extends EasySQLTest {
+ @Override
+ public void onTest(SQLManager sqlManager) throws SQLException {
+ print(" 重命名 test_user_table");
+ sqlManager.alterTable("test_user_table")
+ .renameTo("test_user_table2")
+ .execute();
+ }
+}
diff --git a/pom.xml b/pom.xml
index f3b7a3b..95d6e0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,15 +16,16 @@
cc.carm.lib
easysql-parent
pom
- 0.3.0-SNAPSHOT
+ 0.3.0
easysql-api
easysql-impl
- with-cp/easysql-beecp
- with-cp/easysql-hikaricp
+ with-pool/easysql-beecp
+ with-pool/easysql-hikaricp
example/easysql-demo
+ example/easysql-test
diff --git a/with-cp/easysql-beecp/pom.xml b/with-pool/easysql-beecp/pom.xml
similarity index 98%
rename from with-cp/easysql-beecp/pom.xml
rename to with-pool/easysql-beecp/pom.xml
index 23c6970..cf67502 100644
--- a/with-cp/easysql-beecp/pom.xml
+++ b/with-pool/easysql-beecp/pom.xml
@@ -5,7 +5,7 @@
easysql-parent
cc.carm.lib
- 0.3.0-SNAPSHOT
+ 0.3.0
../../pom.xml
4.0.0
diff --git a/with-cp/easysql-beecp/src/main/java/cc/carm/lib/easysql/EasySQL.java b/with-pool/easysql-beecp/src/main/java/cc/carm/lib/easysql/EasySQL.java
similarity index 100%
rename from with-cp/easysql-beecp/src/main/java/cc/carm/lib/easysql/EasySQL.java
rename to with-pool/easysql-beecp/src/main/java/cc/carm/lib/easysql/EasySQL.java
diff --git a/with-cp/easysql-hikaricp/pom.xml b/with-pool/easysql-hikaricp/pom.xml
similarity index 98%
rename from with-cp/easysql-hikaricp/pom.xml
rename to with-pool/easysql-hikaricp/pom.xml
index 7206773..4af9cfe 100644
--- a/with-cp/easysql-hikaricp/pom.xml
+++ b/with-pool/easysql-hikaricp/pom.xml
@@ -5,7 +5,7 @@
easysql-parent
cc.carm.lib
- 0.3.0-SNAPSHOT
+ 0.3.0
../../pom.xml
4.0.0
diff --git a/with-cp/easysql-hikaricp/src/main/java/cc/carm/lib/easysql/EasySQL.java b/with-pool/easysql-hikaricp/src/main/java/cc/carm/lib/easysql/EasySQL.java
similarity index 100%
rename from with-cp/easysql-hikaricp/src/main/java/cc/carm/lib/easysql/EasySQL.java
rename to with-pool/easysql-hikaricp/src/main/java/cc/carm/lib/easysql/EasySQL.java