mirror of
https://github.com/CarmJos/EasySQL.git
synced 2024-09-19 21:35:47 +00:00
[v0.3.0] 版本更新
- [A] 添加 TableAlertBuilder 用于快捷修改表的相关设定 - [A] 为 TableCreateBuilder 添加数个方法,包含创建索引、自增主键与外键。 - [R] 修改部分Builder的参数值,为泛型添加限定。
This commit is contained in:
parent
d29d06053c
commit
cf91a10b6d
30
.github/workflows/deploy.yml
vendored
30
.github/workflows/deploy.yml
vendored
@ -11,7 +11,8 @@ on:
|
|||||||
types: [ published ]
|
types: [ published ]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
gh-deploy:
|
||||||
|
name: "Publish Project (GitHub)"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@ -27,7 +28,7 @@ jobs:
|
|||||||
server-password: MAVEN_TOKEN
|
server-password: MAVEN_TOKEN
|
||||||
|
|
||||||
- name: "Maven Deploy With Javadoc"
|
- name: "Maven Deploy With Javadoc"
|
||||||
run: mvn -B deploy --file pom.xml -DskipTests
|
run: mvn -B -Pgithub deploy --file pom.xml -DskipTests
|
||||||
env:
|
env:
|
||||||
MAVEN_USERNAME: ${{ github.repository_owner }}
|
MAVEN_USERNAME: ${{ github.repository_owner }}
|
||||||
MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||||
@ -77,3 +78,28 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cd docs
|
cd docs
|
||||||
git push origin HEAD:gh-pages --force
|
git push origin HEAD:gh-pages --force
|
||||||
|
|
||||||
|
central-deploy:
|
||||||
|
name: "Deploy Project (Central Repository)"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: "Set up JDK"
|
||||||
|
uses: actions/setup-java@v2
|
||||||
|
with:
|
||||||
|
java-version: '11'
|
||||||
|
distribution: 'adopt'
|
||||||
|
cache: maven
|
||||||
|
server-id: ossrh
|
||||||
|
server-username: MAVEN_USERNAME
|
||||||
|
server-password: MAVEN_PASSWORD
|
||||||
|
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import
|
||||||
|
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase
|
||||||
|
|
||||||
|
- name: "Central Deploy"
|
||||||
|
run: mvn -B -Possrh deploy --file pom.xml -DskipTests
|
||||||
|
env:
|
||||||
|
MAVEN_USERNAME: ${{ secrets.OSSRH_USER }}
|
||||||
|
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASS }}
|
||||||
|
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
|
@ -5,10 +5,17 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<version>0.2.10</version>
|
<version>0.3.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>11</maven.compiler.source>
|
||||||
|
<maven.compiler.target>11</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
<artifactId>easysql-api</artifactId>
|
<artifactId>easysql-api</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
@ -45,13 +52,6 @@
|
|||||||
<url>${project.url}/actions/workflows/maven.yml</url>
|
<url>${project.url}/actions/workflows/maven.yml</url>
|
||||||
</ciManagement>
|
</ciManagement>
|
||||||
|
|
||||||
<properties>
|
|
||||||
<maven.compiler.source>11</maven.compiler.source>
|
|
||||||
<maven.compiler.target>11</maven.compiler.target>
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
|
@ -3,13 +3,14 @@ package cc.carm.lib.easysql.api;
|
|||||||
import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
|
import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
|
||||||
import cc.carm.lib.easysql.api.function.SQLFunction;
|
import cc.carm.lib.easysql.api.function.SQLFunction;
|
||||||
import cc.carm.lib.easysql.api.function.SQLHandler;
|
import cc.carm.lib.easysql.api.function.SQLHandler;
|
||||||
import cc.carm.lib.easysql.api.function.impl.DefaultSQLExceptionHandler;
|
import cc.carm.lib.easysql.api.function.defaults.DefaultSQLExceptionHandler;
|
||||||
import org.jetbrains.annotations.Contract;
|
import org.jetbrains.annotations.Contract;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SQLAction 是用于承载SQL语句并进行处理、返回的基本类。
|
* SQLAction 是用于承载SQL语句并进行处理、返回的基本类。
|
||||||
@ -188,7 +189,10 @@ public interface SQLAction<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return 默认的异常处理器
|
* 默认的异常处理器
|
||||||
|
*
|
||||||
|
* @return {@link DefaultSQLExceptionHandler#get(Logger)}
|
||||||
|
* @see DefaultSQLExceptionHandler
|
||||||
*/
|
*/
|
||||||
default SQLExceptionHandler defaultExceptionHandler() {
|
default SQLExceptionHandler defaultExceptionHandler() {
|
||||||
return DefaultSQLExceptionHandler.get(getManager().getLogger());
|
return DefaultSQLExceptionHandler.get(getManager().getLogger());
|
||||||
|
@ -109,6 +109,14 @@ public interface SQLManager {
|
|||||||
*/
|
*/
|
||||||
TableCreateBuilder createTable(@NotNull String tableName);
|
TableCreateBuilder createTable(@NotNull String tableName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对库中的某个表执行更改
|
||||||
|
*
|
||||||
|
* @param tableName 表名
|
||||||
|
* @return {@link TableAlertBuilder}
|
||||||
|
*/
|
||||||
|
TableAlertBuilder alterTable(@NotNull String tableName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新建一个查询
|
* 新建一个查询
|
||||||
*
|
*
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package cc.carm.lib.easysql.api;
|
package cc.carm.lib.easysql.api;
|
||||||
|
|
||||||
import cc.carm.lib.easysql.api.SQLManager;
|
|
||||||
import cc.carm.lib.easysql.api.action.query.PreparedQueryAction;
|
import cc.carm.lib.easysql.api.action.query.PreparedQueryAction;
|
||||||
import cc.carm.lib.easysql.api.action.query.QueryAction;
|
import cc.carm.lib.easysql.api.action.query.QueryAction;
|
||||||
|
|
||||||
@ -43,6 +42,7 @@ public interface SQLQuery extends AutoCloseable {
|
|||||||
/**
|
/**
|
||||||
* 关闭所有内容
|
* 关闭所有内容
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
Statement getStatement();
|
Statement getStatement();
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package cc.carm.lib.easysql.api.action;
|
package cc.carm.lib.easysql.api.action;
|
||||||
|
|
||||||
import cc.carm.lib.easysql.api.SQLAction;
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -22,18 +21,4 @@ public interface SQLUpdateBatchAction extends SQLAction<List<Integer>> {
|
|||||||
|
|
||||||
List<String> getSQLContents();
|
List<String> getSQLContents();
|
||||||
|
|
||||||
@Override
|
|
||||||
default SQLExceptionHandler defaultExceptionHandler() {
|
|
||||||
return (exception, action) -> {
|
|
||||||
getManager().getLogger().severe("Error when execute SQLs : ");
|
|
||||||
int i = 1;
|
|
||||||
for (String content : getSQLContents()) {
|
|
||||||
getManager().getLogger().severe("#" + i + " [" + content + "]");
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
getManager().getLogger().severe(exception.getLocalizedMessage());
|
|
||||||
exception.printStackTrace();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package cc.carm.lib.easysql.api.builder;
|
package cc.carm.lib.easysql.api.builder;
|
||||||
|
|
||||||
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
import cc.carm.lib.easysql.api.SQLBuilder;
|
import cc.carm.lib.easysql.api.SQLBuilder;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@ -7,10 +8,21 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
|
||||||
public interface ConditionalBuilder<B extends ConditionalBuilder<B, T>, T> extends SQLBuilder {
|
public interface ConditionalBuilder<B extends ConditionalBuilder<B, T>, T extends SQLAction<?>> extends SQLBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将现有条件构建完整的SQL语句用于执行。
|
||||||
|
*
|
||||||
|
* @return {@link cc.carm.lib.easysql.api.SQLAction}
|
||||||
|
*/
|
||||||
T build();
|
T build();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设定取出的条数
|
||||||
|
*
|
||||||
|
* @param limit 条数限制
|
||||||
|
* @return {@link B}
|
||||||
|
*/
|
||||||
B setLimit(int limit);
|
B setLimit(int limit);
|
||||||
|
|
||||||
B setConditions(@Nullable String condition);
|
B setConditions(@Nullable String condition);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package cc.carm.lib.easysql.api.builder;
|
package cc.carm.lib.easysql.api.builder;
|
||||||
|
|
||||||
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
|
|
||||||
public interface DeleteBuilder extends ConditionalBuilder<DeleteBuilder, PreparedSQLUpdateAction> {
|
public interface DeleteBuilder extends ConditionalBuilder<DeleteBuilder, SQLAction<Integer>> {
|
||||||
|
|
||||||
String getTableName();
|
String getTableName();
|
||||||
|
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
package cc.carm.lib.easysql.api.builder;
|
package cc.carm.lib.easysql.api.builder;
|
||||||
|
|
||||||
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface InsertBuilder<T> {
|
public interface InsertBuilder<T extends SQLAction<?>> {
|
||||||
|
|
||||||
String getTableName();
|
String getTableName();
|
||||||
|
|
||||||
|
@ -1,9 +1,18 @@
|
|||||||
package cc.carm.lib.easysql.api.builder;
|
package cc.carm.lib.easysql.api.builder;
|
||||||
|
|
||||||
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface ReplaceBuilder<T> {
|
/**
|
||||||
|
* REPLACE 语句用于将一组值更新进数据表中。
|
||||||
|
* <br> 执行后,将通过表中键判断该数据是否存在,若存在则用新数据替换原来的值,若不存在则会插入该数据。
|
||||||
|
* <br> 在使用REPLACE时,表与所给行列数据中必须包含唯一索引(或主键),且索引不得为空值,否则将等同于插入语句。
|
||||||
|
*
|
||||||
|
* @param <T> 最终构建出的 {@link SQLAction} 类型
|
||||||
|
*/
|
||||||
|
public interface ReplaceBuilder<T extends SQLAction<?>> {
|
||||||
|
|
||||||
String getTableName();
|
String getTableName();
|
||||||
|
|
||||||
@ -13,5 +22,4 @@ public interface ReplaceBuilder<T> {
|
|||||||
return setColumnNames(columnNames == null ? null : Arrays.asList(columnNames));
|
return setColumnNames(columnNames == null ? null : Arrays.asList(columnNames));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,129 @@
|
|||||||
package cc.carm.lib.easysql.api.builder;
|
package cc.carm.lib.easysql.api.builder;
|
||||||
|
|
||||||
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
import cc.carm.lib.easysql.api.SQLBuilder;
|
import cc.carm.lib.easysql.api.SQLBuilder;
|
||||||
|
import cc.carm.lib.easysql.api.action.SQLUpdateAction;
|
||||||
|
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;
|
||||||
|
|
||||||
public interface TableAlertBuilder extends SQLBuilder {
|
public interface TableAlertBuilder extends SQLBuilder {
|
||||||
|
|
||||||
|
SQLAction<Integer> renameTo(@NotNull String newTableName);
|
||||||
|
|
||||||
|
SQLAction<Integer> changeComment(@NotNull String newTableComment);
|
||||||
|
|
||||||
|
SQLAction<Integer> setAutoIncrementIndex(int index);
|
||||||
|
|
||||||
|
SQLAction<Integer> addIndex(@NotNull IndexType indexType, @NotNull String indexName,
|
||||||
|
@NotNull String columnName, @NotNull String... moreColumns);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为该表移除一个索引
|
||||||
|
*
|
||||||
|
* @param indexName 索引名
|
||||||
|
* @return @return {@link SQLUpdateAction}
|
||||||
|
*/
|
||||||
|
SQLAction<Integer> dropIndex(@NotNull String indexName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为该表移除一个外键
|
||||||
|
*
|
||||||
|
* @param keySymbol 外键名
|
||||||
|
* @return @return {@link SQLUpdateAction}
|
||||||
|
*/
|
||||||
|
SQLAction<Integer> dropForeignKey(@NotNull String keySymbol);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为该表移除主键(须添加新主键)
|
||||||
|
*
|
||||||
|
* @return @return {@link SQLUpdateAction}
|
||||||
|
*/
|
||||||
|
SQLAction<Integer> dropPrimaryKey();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为表添加一列
|
||||||
|
*
|
||||||
|
* @param columnName 列名
|
||||||
|
* @param settings 列的相关设定
|
||||||
|
* @return {@link SQLUpdateAction}
|
||||||
|
*/
|
||||||
|
default SQLAction<Integer> addColumn(@NotNull String columnName, @NotNull String settings) {
|
||||||
|
return addColumn(columnName, settings, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为表添加一列
|
||||||
|
*
|
||||||
|
* @param columnName 列名
|
||||||
|
* @param settings 列的相关设定
|
||||||
|
* @param afterColumn 该列增添到哪个列的后面,
|
||||||
|
* <p> 该参数若省缺则放于最后一行
|
||||||
|
* <p> 若为 "" 则置于首行。
|
||||||
|
* @return {@link SQLUpdateAction}
|
||||||
|
*/
|
||||||
|
SQLAction<Integer> addColumn(@NotNull String columnName, @NotNull String settings, @Nullable String afterColumn);
|
||||||
|
|
||||||
|
SQLAction<Integer> renameColumn(@NotNull String columnName, @NotNull String newName);
|
||||||
|
|
||||||
|
SQLAction<Integer> modifyColumn(@NotNull String columnName, @NotNull String settings);
|
||||||
|
|
||||||
|
default SQLAction<Integer> modifyColumn(@NotNull String columnName, @NotNull String columnSettings, @NotNull String afterColumn) {
|
||||||
|
return modifyColumn(columnName, columnSettings + " AFTER `" + afterColumn + "`");
|
||||||
|
}
|
||||||
|
|
||||||
|
SQLAction<Integer> removeColumn(@NotNull String columnName);
|
||||||
|
|
||||||
|
SQLAction<Integer> setColumnDefault(@NotNull String columnName, @NotNull String defaultValue);
|
||||||
|
|
||||||
|
SQLAction<Integer> removeColumnDefault(@NotNull String columnName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为该表添加一个自增列
|
||||||
|
* <p> 自增列强制要求为数字类型,非空,且为UNIQUE。
|
||||||
|
* <p> 注意:一个表只允许有一个自增列!
|
||||||
|
*
|
||||||
|
* @param columnName 列名
|
||||||
|
* @param numberType 数字类型,若省缺则为 {@link NumberType#INT}
|
||||||
|
* @param primary 是否为主键,若否则只为唯一键
|
||||||
|
* @param unsigned 是否采用 UNSIGNED (即无负数,可以增加自增键的最高数,建议为true)
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
default SQLAction<Integer> 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"),
|
||||||
|
""
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为该表添加一个自增列
|
||||||
|
* <br> 自增列强制要求为数字类型,非空,且为UNIQUE。
|
||||||
|
* <p> 注意:一个表只允许有一个自增列!
|
||||||
|
*
|
||||||
|
* @param columnName 列名
|
||||||
|
* @param numberType 数字类型,若省缺则为 {@link NumberType#INT}
|
||||||
|
* @return {@link TableAlertBuilder}
|
||||||
|
*/
|
||||||
|
default SQLAction<Integer> addAutoIncrementColumn(@NotNull String columnName, @NotNull NumberType numberType) {
|
||||||
|
return addAutoIncrementColumn(columnName, numberType, false, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为该表添加一个自增列
|
||||||
|
* <br> 自增列强制要求为数字类型,非空,且为UNIQUE。
|
||||||
|
* <p> 注意:一个表只允许有一个自增列!
|
||||||
|
*
|
||||||
|
* @param columnName 列名
|
||||||
|
* @return {@link TableAlertBuilder}
|
||||||
|
*/
|
||||||
|
default SQLAction<Integer> addAutoIncrementColumn(@NotNull String columnName) {
|
||||||
|
return addAutoIncrementColumn(columnName, NumberType.INT);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,29 +2,239 @@ package cc.carm.lib.easysql.api.builder;
|
|||||||
|
|
||||||
import cc.carm.lib.easysql.api.SQLBuilder;
|
import cc.carm.lib.easysql.api.SQLBuilder;
|
||||||
import cc.carm.lib.easysql.api.action.SQLUpdateAction;
|
import cc.carm.lib.easysql.api.action.SQLUpdateAction;
|
||||||
|
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 org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public interface TableCreateBuilder extends SQLBuilder {
|
public interface TableCreateBuilder extends SQLBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将现有条件构建完整的SQL语句用于执行。
|
||||||
|
*
|
||||||
|
* @return {@link SQLUpdateAction}
|
||||||
|
*/
|
||||||
|
SQLUpdateAction build();
|
||||||
|
|
||||||
@NotNull String getTableName();
|
@NotNull String getTableName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到表的设定。
|
||||||
|
* <p> 若未使用 {@link #setTableSettings(String)} 方法则会采用 {@link #defaultTablesSettings()} 。
|
||||||
|
*
|
||||||
|
* @return TableSettings
|
||||||
|
*/
|
||||||
@NotNull String getTableSettings();
|
@NotNull String getTableSettings();
|
||||||
|
|
||||||
TableCreateBuilder setTableSettings(@NotNull String settings);
|
TableCreateBuilder setTableSettings(@NotNull String settings);
|
||||||
|
|
||||||
SQLUpdateAction build();
|
/**
|
||||||
|
* 设定表的标注,一般用于解释该表的作用。
|
||||||
|
*
|
||||||
|
* @param comment 表标注
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
TableCreateBuilder setTableComment(@Nullable String comment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 直接设定表的所有列信息
|
||||||
|
*
|
||||||
|
* @param columns 列的相关信息 (包括列设定)
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
TableCreateBuilder setColumns(@NotNull String... columns);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为该表添加一个列
|
||||||
|
*
|
||||||
|
* @param column 列的相关信息
|
||||||
|
* <br>如 `uuid` VARCHAR(36) NOT NULL UNIQUE KEY
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
TableCreateBuilder addColumn(@NotNull String column);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为该表添加一个列
|
||||||
|
*
|
||||||
|
* @param columnName 列名
|
||||||
|
* @param settings 列的设定
|
||||||
|
* <br>如 VARCHAR(36) NOT NULL UNIQUE KEY
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
default TableCreateBuilder addColumn(@NotNull String columnName, @NotNull String settings) {
|
default TableCreateBuilder addColumn(@NotNull String columnName, @NotNull String settings) {
|
||||||
return addColumn("`" + columnName + "` " + settings);
|
return addColumn("`" + columnName + "` " + settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
TableCreateBuilder addColumn(@NotNull String column);
|
/**
|
||||||
|
* 为该表添加一个列
|
||||||
TableCreateBuilder setColumns(@NotNull String... columns);
|
*
|
||||||
|
* @param columnName 列名
|
||||||
default TableCreateBuilder defaultTablesSettings() {
|
* @param settings 列的设定
|
||||||
return setTableSettings("ENGINE=InnoDB DEFAULT CHARSET=utf8");
|
* <br>如 VARCHAR(36) NOT NULL UNIQUE KEY
|
||||||
|
* @param comments 列的注解,用于解释该列数据的作用
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
default TableCreateBuilder addColumn(@NotNull String columnName, @NotNull String settings, @NotNull String comments) {
|
||||||
|
return addColumn(columnName, settings + " COMMENT '" + comments + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为该表添加一个自增列
|
||||||
|
* <p> 自增列强制要求为数字类型,非空,且为UNIQUE。
|
||||||
|
* <p> 注意:一个表只允许有一个自增列!
|
||||||
|
*
|
||||||
|
* @param columnName 列名
|
||||||
|
* @param numberType 数字类型,若省缺则为 {@link NumberType#INT}
|
||||||
|
* @param primary 是否为主键,若为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")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为该表添加一个自增主键列
|
||||||
|
* <p> 自增列强制要求为数字类型,非空,且为UNIQUE。
|
||||||
|
* <p> 注意:一个表只允许有一个自增列!
|
||||||
|
*
|
||||||
|
* @param columnName 列名
|
||||||
|
* @param numberType 数字类型,若省缺则为 {@link NumberType#INT}
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, @Nullable NumberType numberType) {
|
||||||
|
return addAutoIncrementColumn(columnName, numberType, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为该表添加一个INT类型的自增主键列
|
||||||
|
* <p> 自增列强制要求为数字类型,非空,且为UNIQUE。
|
||||||
|
* <p> 本方法采用的类型为 INT 如有其他需要请自行使用 {@link #addAutoIncrementColumn(String, NumberType)} 方法。
|
||||||
|
* <p> 注意:一个表只允许有一个自增列!
|
||||||
|
*
|
||||||
|
* @param columnName 列名
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName) {
|
||||||
|
return addAutoIncrementColumn(columnName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设定表中的某列为索引或键。
|
||||||
|
*
|
||||||
|
* <p>创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
|
||||||
|
* <br>虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE 和DELETE。
|
||||||
|
* <br>因此,请合理的设计索引。
|
||||||
|
*
|
||||||
|
* @param type 索引类型
|
||||||
|
* @param columnName 索引包含的列
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
default TableCreateBuilder setIndex(@NotNull IndexType type,
|
||||||
|
@NotNull String columnName) {
|
||||||
|
return setIndex(type, null, columnName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设定表中的某列为索引或键。
|
||||||
|
*
|
||||||
|
* <p>创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
|
||||||
|
* <br>虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE 和DELETE。
|
||||||
|
* <br>因此,请合理的设计索引。
|
||||||
|
*
|
||||||
|
* @param type 索引类型
|
||||||
|
* @param indexName 索引名称,缺省时将根据第一个索引列赋一个名称
|
||||||
|
* @param columnName 索引包含的列
|
||||||
|
* @param moreColumns 联合索引需要包含的列
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
TableCreateBuilder setIndex(@NotNull IndexType type, @Nullable String indexName,
|
||||||
|
@NotNull String columnName, @NotNull String... moreColumns);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 以本表位从表,为表中某列设定自参照外键(即自参照完整性)。
|
||||||
|
*
|
||||||
|
* <p>外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。
|
||||||
|
* <br>外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
|
||||||
|
* <br>主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。
|
||||||
|
*
|
||||||
|
* @param tableColumn 本表中的列
|
||||||
|
* @param foreignColumn 外键关联表中对应的关联列,必须为目标表的主键,即 {@link IndexType#PRIMARY_KEY}
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
default TableCreateBuilder addForeignKey(@NotNull String tableColumn, @NotNull String foreignColumn) {
|
||||||
|
return addForeignKey(tableColumn, getTableName(), foreignColumn);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 以本表位从表,为表中某列设定外键。
|
||||||
|
*
|
||||||
|
* <p>外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。
|
||||||
|
* <br>外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
|
||||||
|
* <br>主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。
|
||||||
|
*
|
||||||
|
* @param tableColumn 本表中的列
|
||||||
|
* @param foreignTable 外键关联主表,必须为已存在的表或本表,且必须有主键。
|
||||||
|
* @param foreignColumn 外键关联主表中对应的关联列,须满足
|
||||||
|
* <p> 1. 为主表的主键,即 {@link IndexType#PRIMARY_KEY}
|
||||||
|
* <p> 2. 数据类型必须和所要建立主键的列的数据类型相同。
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
default TableCreateBuilder addForeignKey(@NotNull String tableColumn,
|
||||||
|
@NotNull String foreignTable, @NotNull String foreignColumn) {
|
||||||
|
return addForeignKey(tableColumn, null, foreignTable, foreignColumn);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 以本表位从表,为表中某列设定外键。
|
||||||
|
*
|
||||||
|
* <p>外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。
|
||||||
|
* <br>外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
|
||||||
|
* <br>主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。
|
||||||
|
*
|
||||||
|
* @param tableColumn 本表中的列
|
||||||
|
* @param constraintName 约束名,缺省时将使用参数自动生成,如 <i>fk_[tableColumn]_[foreignTable]</i>
|
||||||
|
* @param foreignTable 外键关联主表,必须为已存在的表或本表,且必须有主键。
|
||||||
|
* @param foreignColumn 外键关联主表中对应的关联列,须满足
|
||||||
|
* <p> 1. 为主表的主键,即 {@link IndexType#PRIMARY_KEY}
|
||||||
|
* <p> 2. 数据类型必须和所要建立主键的列的数据类型相同。
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
default TableCreateBuilder addForeignKey(@NotNull String tableColumn, @Nullable String constraintName,
|
||||||
|
@NotNull String foreignTable, @NotNull String foreignColumn) {
|
||||||
|
return addForeignKey(tableColumn, constraintName, foreignTable, foreignColumn, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 以本表位从表,为表中某列设定外键。
|
||||||
|
*
|
||||||
|
* <p>外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。
|
||||||
|
* <br>外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
|
||||||
|
* <br>主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。
|
||||||
|
*
|
||||||
|
* @param tableColumn 本表中的列
|
||||||
|
* @param constraintName 约束名,缺省时将使用参数自动生成,如 <i>fk_[tableColumn]_[foreignTable]</i>
|
||||||
|
* @param foreignTable 外键关联主表,必须为已存在的表或本表,且必须有主键。
|
||||||
|
* @param foreignColumn 外键关联主表中对应的关联列,须满足
|
||||||
|
* <p> 1. 为主表的主键,即 {@link IndexType#PRIMARY_KEY}
|
||||||
|
* <p> 2. 数据类型必须和所要建立主键的列的数据类型相同。
|
||||||
|
* @param updateRule 在外键被更新时采用的规则,缺省时默认为{@link ForeignKeyRule#RESTRICT}
|
||||||
|
* @param deleteRule 在外键被删除时采用的规则,缺省时默认为{@link ForeignKeyRule#RESTRICT}
|
||||||
|
* @return {@link TableCreateBuilder}
|
||||||
|
*/
|
||||||
|
TableCreateBuilder addForeignKey(@NotNull String tableColumn, @Nullable String constraintName,
|
||||||
|
@NotNull String foreignTable, @NotNull String foreignColumn,
|
||||||
|
@Nullable ForeignKeyRule updateRule, @Nullable ForeignKeyRule deleteRule);
|
||||||
|
|
||||||
|
default String defaultTablesSettings() {
|
||||||
|
return "ENGINE=InnoDB DEFAULT CHARSET=utf8";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package cc.carm.lib.easysql.api.builder;
|
package cc.carm.lib.easysql.api.builder;
|
||||||
|
|
||||||
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
|
||||||
public interface UpdateBuilder extends ConditionalBuilder<UpdateBuilder, PreparedSQLUpdateAction> {
|
public interface UpdateBuilder extends ConditionalBuilder<UpdateBuilder, SQLAction<Integer>> {
|
||||||
|
|
||||||
String getTableName();
|
String getTableName();
|
||||||
|
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
package cc.carm.lib.easysql.api.builder;
|
package cc.carm.lib.easysql.api.builder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 存在则更新,不存在则插入。
|
||||||
|
*
|
||||||
|
* @see ReplaceBuilder
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public interface UpsertBuilder {
|
public interface UpsertBuilder {
|
||||||
|
|
||||||
String getTableName();
|
String getTableName();
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
package cc.carm.lib.easysql.api.enums;
|
||||||
|
|
||||||
|
public enum ForeignKeyRule {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 啥也不做
|
||||||
|
* <p>注意: 在Mysql中该选项实际上等同于采用默认的 {@link #RESTRICT} 设定!
|
||||||
|
*/
|
||||||
|
NO_ACTION("NO ACTION"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拒绝删除要求,直到使用删除键值的辅助表被手工删除,并且没有参照时(这是默认设置,也是最安全的设置)
|
||||||
|
*/
|
||||||
|
RESTRICT("RESTRICT"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改包含与已删除键值有参照关系的所有记录,使用NULL值替换(只能用于已标记为NOT NULL的字段)
|
||||||
|
*/
|
||||||
|
SET_NULL("SET NULL"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改包含与已删除键值有参照关系的所有记录,使用默认值替换(只能用于设定了DEFAULT的字段)
|
||||||
|
*/
|
||||||
|
SET_DEFAULT("SET DEFAULT"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <b>级联删除</b>,删除包含与已删除键值有参照关系的所有记录
|
||||||
|
*/
|
||||||
|
CASCADE("CASCADE");
|
||||||
|
|
||||||
|
String ruleName;
|
||||||
|
|
||||||
|
ForeignKeyRule(String ruleName) {
|
||||||
|
this.ruleName = ruleName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRuleName() {
|
||||||
|
return ruleName;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
package cc.carm.lib.easysql.api.enums;
|
||||||
|
|
||||||
|
public enum IndexType {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <b>普通索引</b>(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
|
||||||
|
* <br> 因此,应该只为那些最经常出现在查询条件(WHERE column=)或排序条件(ORDER BY column)中的数据列创建索引。
|
||||||
|
* <br> 只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。
|
||||||
|
*/
|
||||||
|
INDEX("INDEX"),
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <b>唯一索引</b> 是在表上一个或者多个字段组合建立的索引,这个或者这些字段的值组合起来在表中不可以重复,用于保证数据的唯一性。
|
||||||
|
*/
|
||||||
|
UNIQUE_KEY("UNIQUE KEY"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <b>主键索引</b> 是唯一索引的特定类型。表中创建主键时自动创建的索引 。一个表只能建立一个主索引。
|
||||||
|
*/
|
||||||
|
PRIMARY_KEY("PRIMARY KEY"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <b>全文索引</b> 主要用来查找文本中的关键字,而不是直接与索引中的值相比较。
|
||||||
|
* <br> 请搭配 MATCH 等语句使用,而不是使用 WHERE - LIKE 。
|
||||||
|
* <br> 全文索引只可用于 CHAR、 VARCHAR 与 TEXT 系列类型。
|
||||||
|
*/
|
||||||
|
FULLTEXT_INDEX("FULLTEXT");
|
||||||
|
|
||||||
|
|
||||||
|
String name;
|
||||||
|
|
||||||
|
IndexType(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package cc.carm.lib.easysql.api.enums;
|
||||||
|
|
||||||
|
public enum NumberType {
|
||||||
|
|
||||||
|
TINYINT,
|
||||||
|
SMALLINT,
|
||||||
|
MEDIUMINT,
|
||||||
|
INT,
|
||||||
|
BIGINT
|
||||||
|
|
||||||
|
}
|
@ -8,4 +8,5 @@ import java.util.function.BiConsumer;
|
|||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
public interface SQLExceptionHandler extends BiConsumer<SQLException, SQLAction<?>> {
|
public interface SQLExceptionHandler extends BiConsumer<SQLException, SQLAction<?>> {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cc.carm.lib.easysql.api.function.impl;
|
package cc.carm.lib.easysql.api.function.defaults;
|
||||||
|
|
||||||
import cc.carm.lib.easysql.api.SQLAction;
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
|
import cc.carm.lib.easysql.api.action.SQLUpdateBatchAction;
|
||||||
import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
|
import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@ -37,8 +38,18 @@ public class DefaultSQLExceptionHandler implements SQLExceptionHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void accept(SQLException exception, SQLAction<?> sqlAction) {
|
public void accept(SQLException exception, SQLAction<?> sqlAction) {
|
||||||
getLogger().severe("Error when execute [" + sqlAction.getSQLContent() + "]");
|
if (sqlAction instanceof SQLUpdateBatchAction) {
|
||||||
getLogger().severe(exception.getLocalizedMessage());
|
|
||||||
|
getLogger().severe("Error when execute SQLs : ");
|
||||||
|
int i = 1;
|
||||||
|
for (String content : ((SQLUpdateBatchAction) sqlAction).getSQLContents()) {
|
||||||
|
getLogger().severe("#" + i + " {" + content + "}");
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
getLogger().severe("Error when execute { " + sqlAction.getSQLContent() + " }");
|
||||||
|
}
|
||||||
exception.printStackTrace();
|
exception.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
@ -5,10 +5,17 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>0.2.10</version>
|
<version>0.3.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>11</maven.compiler.source>
|
||||||
|
<maven.compiler.target>11</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
<artifactId>easysql-beecp</artifactId>
|
<artifactId>easysql-beecp</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
@ -45,14 +52,6 @@
|
|||||||
<url>${project.url}/actions/workflows/maven.yml</url>
|
<url>${project.url}/actions/workflows/maven.yml</url>
|
||||||
</ciManagement>
|
</ciManagement>
|
||||||
|
|
||||||
<properties>
|
|
||||||
<maven.compiler.source>11</maven.compiler.source>
|
|
||||||
<maven.compiler.target>11</maven.compiler.target>
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
|
||||||
<maven.javadoc.skip>true</maven.javadoc.skip>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -5,10 +5,19 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>0.2.10</version>
|
<version>0.3.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>11</maven.compiler.source>
|
||||||
|
<maven.compiler.target>11</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||||
|
<maven.javadoc.skip>true</maven.javadoc.skip>
|
||||||
|
<maven.deploy.skip>true</maven.deploy.skip>
|
||||||
|
</properties>
|
||||||
|
|
||||||
<artifactId>easysql-demo</artifactId>
|
<artifactId>easysql-demo</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
@ -45,15 +54,6 @@
|
|||||||
<url>${project.url}/actions/workflows/maven.yml</url>
|
<url>${project.url}/actions/workflows/maven.yml</url>
|
||||||
</ciManagement>
|
</ciManagement>
|
||||||
|
|
||||||
<properties>
|
|
||||||
<maven.compiler.source>11</maven.compiler.source>
|
|
||||||
<maven.compiler.target>11</maven.compiler.target>
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
|
||||||
<maven.javadoc.skip>true</maven.javadoc.skip>
|
|
||||||
<maven.deploy.skip>true</maven.deploy.skip>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
import cc.carm.lib.easysql.api.SQLManager;
|
import cc.carm.lib.easysql.api.SQLManager;
|
||||||
import cc.carm.lib.easysql.api.SQLQuery;
|
import cc.carm.lib.easysql.api.SQLQuery;
|
||||||
|
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.api.util.TimeDateUtils;
|
import cc.carm.lib.easysql.api.util.TimeDateUtils;
|
||||||
import cc.carm.lib.easysql.api.util.UUIDUtil;
|
import cc.carm.lib.easysql.api.util.UUIDUtil;
|
||||||
|
|
||||||
@ -12,17 +15,39 @@ public class EasySQLDemo {
|
|||||||
public void createTable(SQLManager sqlManager) {
|
public void createTable(SQLManager sqlManager) {
|
||||||
// 同步创建表
|
// 同步创建表
|
||||||
sqlManager.createTable("users")
|
sqlManager.createTable("users")
|
||||||
.addColumn("id", "INT(11) AUTO_INCREMENT NOT NULL PRIMARY KEY")
|
// .addColumn("id", "INT(11) AUTO_INCREMENT NOT NULL PRIMARY KEY")
|
||||||
|
.addAutoIncrementColumn("id", NumberType.INT, true, true)
|
||||||
.addColumn("uuid", "VARCHAR(32) NOT NULL UNIQUE KEY")
|
.addColumn("uuid", "VARCHAR(32) NOT NULL UNIQUE KEY")
|
||||||
.addColumn("username", "VARCHAR(16) NOT NULL UNIQUE KEY")
|
.addColumn("username", "VARCHAR(16) NOT NULL")
|
||||||
.addColumn("age", "INT(3) NOT NULL DEFAULT 1")
|
.addColumn("age", "TINYINT NOT NULL DEFAULT 1")
|
||||||
.addColumn("email", "VARCHAR(32)")
|
.addColumn("email", "VARCHAR(32)")
|
||||||
.addColumn("phone", "VARCHAR(16)")
|
.addColumn("phone", "VARCHAR(16)")
|
||||||
.addColumn("registerTime", "DATETIME NOT NULL")
|
.addColumn("registerTime", "DATETIME NOT NULL")
|
||||||
.addColumn("INDEX `phone`") // 添加索引
|
// .addColumn("INDEX `phone`") // 原始方法添加索引
|
||||||
|
.setIndex(IndexType.UNIQUE_KEY, "username") // 添加唯一索引
|
||||||
|
.setIndex(IndexType.INDEX, "contact", "email", "phone") //添加联合索引 (示例)
|
||||||
|
.build().execute(null /* 不处理错误 */);
|
||||||
|
|
||||||
|
sqlManager.createTable("user_ipaddr")
|
||||||
|
.addAutoIncrementColumn("id", NumberType.INT, true, true)
|
||||||
|
.addColumn("uuid", "VARCHAR(32) NOT NULL")
|
||||||
|
.addColumn("ip", "VARCHAR(16)")
|
||||||
|
.addColumn("time", "DATETIME NOT NULL")
|
||||||
|
.addForeignKey("uuid", null,
|
||||||
|
"users", "uuid",
|
||||||
|
ForeignKeyRule.CASCADE, ForeignKeyRule.CASCADE
|
||||||
|
)
|
||||||
.build().execute(null /* 不处理错误 */);
|
.build().execute(null /* 不处理错误 */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void alertTable(SQLManager sqlManager) {
|
||||||
|
// 同步更新表
|
||||||
|
sqlManager.alterTable("users")
|
||||||
|
.modifyColumn("age", "TINYINT NOT NULL DEFAULT 0")
|
||||||
|
.execute(null /* 不处理错误 */);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void sqlQuery(SQLManager sqlManager) {
|
public void sqlQuery(SQLManager sqlManager) {
|
||||||
// 同步SQL查询
|
// 同步SQL查询
|
||||||
try (SQLQuery query = sqlManager.createQuery()
|
try (SQLQuery query = sqlManager.createQuery()
|
||||||
|
@ -5,10 +5,17 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>0.2.10</version>
|
<version>0.3.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>11</maven.compiler.source>
|
||||||
|
<maven.compiler.target>11</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
<artifactId>easysql-hikaricp</artifactId>
|
<artifactId>easysql-hikaricp</artifactId>
|
||||||
|
|
||||||
<name>11-EasySQL-HikariCP</name>
|
<name>11-EasySQL-HikariCP</name>
|
||||||
@ -44,14 +51,6 @@
|
|||||||
<url>${project.url}/actions/workflows/maven.yml</url>
|
<url>${project.url}/actions/workflows/maven.yml</url>
|
||||||
</ciManagement>
|
</ciManagement>
|
||||||
|
|
||||||
<properties>
|
|
||||||
<maven.compiler.source>11</maven.compiler.source>
|
|
||||||
<maven.compiler.target>11</maven.compiler.target>
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
|
||||||
<maven.javadoc.skip>true</maven.javadoc.skip>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -5,10 +5,17 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>0.2.10</version>
|
<version>0.3.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>11</maven.compiler.source>
|
||||||
|
<maven.compiler.target>11</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
<artifactId>easysql-impl</artifactId>
|
<artifactId>easysql-impl</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
@ -45,14 +52,6 @@
|
|||||||
<url>${project.url}/actions/workflows/maven.yml</url>
|
<url>${project.url}/actions/workflows/maven.yml</url>
|
||||||
</ciManagement>
|
</ciManagement>
|
||||||
|
|
||||||
<properties>
|
|
||||||
<maven.compiler.source>11</maven.compiler.source>
|
|
||||||
<maven.compiler.target>11</maven.compiler.target>
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
|
||||||
<maven.javadoc.skip>true</maven.javadoc.skip>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -5,10 +5,8 @@ import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
|
|||||||
import cc.carm.lib.easysql.api.function.SQLHandler;
|
import cc.carm.lib.easysql.api.function.SQLHandler;
|
||||||
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public abstract class AbstractSQLAction<T> implements SQLAction<T> {
|
public abstract class AbstractSQLAction<T> implements SQLAction<T> {
|
||||||
@ -20,8 +18,6 @@ public abstract class AbstractSQLAction<T> implements SQLAction<T> {
|
|||||||
|
|
||||||
protected @NotNull String sqlContent;
|
protected @NotNull String sqlContent;
|
||||||
|
|
||||||
protected static @Nullable SQLExceptionHandler exceptionHandler = null;
|
|
||||||
|
|
||||||
public AbstractSQLAction(@NotNull SQLManagerImpl manager, @NotNull String sql) {
|
public AbstractSQLAction(@NotNull SQLManagerImpl manager, @NotNull String sql) {
|
||||||
this(manager, sql, System.currentTimeMillis());
|
this(manager, sql, System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
@ -69,10 +65,11 @@ public abstract class AbstractSQLAction<T> implements SQLAction<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void outputDebugMessage() {
|
protected void outputDebugMessage() {
|
||||||
getManager().debug("#" + getShortID() + " ->" + getSQLContent());
|
getManager().debug("#" + getShortID() + " -> { " + getSQLContent() + " }");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@SuppressWarnings("FutureReturnValueIgnored")
|
||||||
public void executeAsync(SQLHandler<T> success, SQLExceptionHandler failure) {
|
public void executeAsync(SQLHandler<T> success, SQLExceptionHandler failure) {
|
||||||
getManager().getExecutorPool().submit(() -> {
|
getManager().getExecutorPool().submit(() -> {
|
||||||
try {
|
try {
|
||||||
|
@ -39,6 +39,7 @@ public class SQLUpdateBatchActionImpl
|
|||||||
Connection connection = getManager().getConnection();
|
Connection connection = getManager().getConnection();
|
||||||
Statement statement = connection.createStatement();
|
Statement statement = connection.createStatement();
|
||||||
outputDebugMessage();
|
outputDebugMessage();
|
||||||
|
|
||||||
for (String content : this.sqlContents) {
|
for (String content : this.sqlContents) {
|
||||||
statement.addBatch(content);
|
statement.addBatch(content);
|
||||||
}
|
}
|
||||||
@ -50,4 +51,13 @@ public class SQLUpdateBatchActionImpl
|
|||||||
|
|
||||||
return returnedValues;
|
return returnedValues;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void outputDebugMessage() {
|
||||||
|
getManager().debug("#" + getShortID() + " -> {");
|
||||||
|
for (String content : getSQLContents()) getManager().debug(" " + content);
|
||||||
|
getManager().debug("}");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -50,8 +50,9 @@ public class PreparedQueryActionImpl extends QueryActionImpl implements Prepared
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull SQLQueryImpl execute() throws SQLException {
|
public @NotNull SQLQueryImpl execute() throws SQLException {
|
||||||
|
outputDebugMessage();
|
||||||
|
|
||||||
Connection connection = getManager().getConnection();
|
Connection connection = getManager().getConnection();
|
||||||
getManager().debug("#" + getShortID() + " ->" + getSQLContent());
|
|
||||||
PreparedStatement preparedStatement;
|
PreparedStatement preparedStatement;
|
||||||
if (handler == null) {
|
if (handler == null) {
|
||||||
preparedStatement = StatementUtil.createPrepareStatement(connection, getSQLContent(), this.params);
|
preparedStatement = StatementUtil.createPrepareStatement(connection, getSQLContent(), this.params);
|
||||||
@ -60,8 +61,14 @@ public class PreparedQueryActionImpl extends QueryActionImpl implements Prepared
|
|||||||
handler.accept(preparedStatement);
|
handler.accept(preparedStatement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long executeTime = System.currentTimeMillis();
|
||||||
ResultSet resultSet = preparedStatement.executeQuery();
|
ResultSet resultSet = preparedStatement.executeQuery();
|
||||||
|
|
||||||
return new SQLQueryImpl(getManager(), this, connection, preparedStatement, resultSet);
|
return new SQLQueryImpl(
|
||||||
|
getManager(), this,
|
||||||
|
connection, preparedStatement, resultSet,
|
||||||
|
executeTime
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package cc.carm.lib.easysql.action.query;
|
package cc.carm.lib.easysql.action.query;
|
||||||
|
|
||||||
import cc.carm.lib.easysql.action.AbstractSQLAction;
|
import cc.carm.lib.easysql.action.AbstractSQLAction;
|
||||||
import cc.carm.lib.easysql.api.action.query.QueryAction;
|
|
||||||
import cc.carm.lib.easysql.api.SQLQuery;
|
import cc.carm.lib.easysql.api.SQLQuery;
|
||||||
|
import cc.carm.lib.easysql.api.action.query.QueryAction;
|
||||||
import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
|
import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
|
||||||
import cc.carm.lib.easysql.api.function.SQLHandler;
|
import cc.carm.lib.easysql.api.function.SQLHandler;
|
||||||
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
||||||
@ -22,13 +22,20 @@ public class QueryActionImpl extends AbstractSQLAction<SQLQuery> implements Quer
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull SQLQueryImpl execute() throws SQLException {
|
public @NotNull SQLQueryImpl execute() throws SQLException {
|
||||||
|
|
||||||
Connection connection = getManager().getConnection();
|
Connection connection = getManager().getConnection();
|
||||||
Statement statement = connection.createStatement();
|
Statement statement = connection.createStatement();
|
||||||
|
|
||||||
outputDebugMessage();
|
outputDebugMessage();
|
||||||
|
|
||||||
|
long executeTime = System.currentTimeMillis();
|
||||||
ResultSet resultSet = statement.executeQuery(getSQLContent());
|
ResultSet resultSet = statement.executeQuery(getSQLContent());
|
||||||
SQLQueryImpl query = new SQLQueryImpl(getManager(), this, connection, statement, resultSet);
|
SQLQueryImpl query = new SQLQueryImpl(
|
||||||
|
getManager(), this,
|
||||||
|
connection, statement, resultSet,
|
||||||
|
executeTime
|
||||||
|
);
|
||||||
|
|
||||||
getManager().getActiveQuery().put(getActionUUID(), query);
|
getManager().getActiveQuery().put(getActionUUID(), query);
|
||||||
|
|
||||||
return query;
|
return query;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package cc.carm.lib.easysql.builder.impl;
|
package cc.carm.lib.easysql.builder.impl;
|
||||||
|
|
||||||
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
import cc.carm.lib.easysql.api.builder.ConditionalBuilder;
|
import cc.carm.lib.easysql.api.builder.ConditionalBuilder;
|
||||||
import cc.carm.lib.easysql.builder.AbstractSQLBuilder;
|
import cc.carm.lib.easysql.builder.AbstractSQLBuilder;
|
||||||
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
||||||
@ -13,7 +14,7 @@ import java.util.Date;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
|
||||||
public abstract class AbstractConditionalBuilder<B extends ConditionalBuilder<B, T>, T>
|
public abstract class AbstractConditionalBuilder<B extends ConditionalBuilder<B, T>, T extends SQLAction<?>>
|
||||||
extends AbstractSQLBuilder implements ConditionalBuilder<B, T> {
|
extends AbstractSQLBuilder implements ConditionalBuilder<B, T> {
|
||||||
|
|
||||||
ArrayList<String> conditionSQLs = new ArrayList<>();
|
ArrayList<String> conditionSQLs = new ArrayList<>();
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
package cc.carm.lib.easysql.builder.impl;
|
package cc.carm.lib.easysql.builder.impl;
|
||||||
|
|
||||||
import cc.carm.lib.easysql.action.PreparedSQLUpdateActionImpl;
|
import cc.carm.lib.easysql.action.PreparedSQLUpdateActionImpl;
|
||||||
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
|
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
|
||||||
import cc.carm.lib.easysql.api.builder.DeleteBuilder;
|
import cc.carm.lib.easysql.api.builder.DeleteBuilder;
|
||||||
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class DeleteBuilderImpl
|
public class DeleteBuilderImpl
|
||||||
extends AbstractConditionalBuilder<DeleteBuilder, PreparedSQLUpdateAction>
|
extends AbstractConditionalBuilder<DeleteBuilder, SQLAction<Integer>>
|
||||||
implements DeleteBuilder {
|
implements DeleteBuilder {
|
||||||
|
|
||||||
String tableName;
|
String tableName;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package cc.carm.lib.easysql.builder.impl;
|
package cc.carm.lib.easysql.builder.impl;
|
||||||
|
|
||||||
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
import cc.carm.lib.easysql.api.builder.InsertBuilder;
|
import cc.carm.lib.easysql.api.builder.InsertBuilder;
|
||||||
import cc.carm.lib.easysql.builder.AbstractSQLBuilder;
|
import cc.carm.lib.easysql.builder.AbstractSQLBuilder;
|
||||||
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
||||||
@ -8,7 +9,8 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public abstract class InsertBuilderImpl<T> extends AbstractSQLBuilder implements InsertBuilder<T> {
|
public abstract class InsertBuilderImpl<T extends SQLAction<?>>
|
||||||
|
extends AbstractSQLBuilder implements InsertBuilder<T> {
|
||||||
|
|
||||||
String tableName;
|
String tableName;
|
||||||
|
|
||||||
@ -40,6 +42,7 @@ public abstract class InsertBuilderImpl<T> extends AbstractSQLBuilder implements
|
|||||||
return sqlBuilder.toString();
|
return sqlBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getTableName() {
|
public String getTableName() {
|
||||||
return tableName;
|
return tableName;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package cc.carm.lib.easysql.builder.impl;
|
package cc.carm.lib.easysql.builder.impl;
|
||||||
|
|
||||||
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
import cc.carm.lib.easysql.api.builder.ReplaceBuilder;
|
import cc.carm.lib.easysql.api.builder.ReplaceBuilder;
|
||||||
import cc.carm.lib.easysql.builder.AbstractSQLBuilder;
|
import cc.carm.lib.easysql.builder.AbstractSQLBuilder;
|
||||||
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
||||||
@ -8,7 +9,8 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public abstract class ReplaceBuilderImpl<T> extends AbstractSQLBuilder implements ReplaceBuilder<T> {
|
public abstract class ReplaceBuilderImpl<T extends SQLAction<?>>
|
||||||
|
extends AbstractSQLBuilder implements ReplaceBuilder<T> {
|
||||||
|
|
||||||
String tableName;
|
String tableName;
|
||||||
|
|
||||||
@ -40,6 +42,7 @@ public abstract class ReplaceBuilderImpl<T> extends AbstractSQLBuilder implement
|
|||||||
return sqlBuilder.toString();
|
return sqlBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getTableName() {
|
public String getTableName() {
|
||||||
return tableName;
|
return tableName;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,120 @@
|
|||||||
|
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.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 {
|
||||||
|
|
||||||
|
protected final @NotNull String tableName;
|
||||||
|
|
||||||
|
public TableAlterBuilderImpl(@NotNull SQLManagerImpl manager, @NotNull String tableName) {
|
||||||
|
super(manager);
|
||||||
|
this.tableName = tableName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public @NotNull String getTableName() {
|
||||||
|
return tableName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> renameTo(@NotNull String newTableName) {
|
||||||
|
return new SQLUpdateActionImpl(getManager(),
|
||||||
|
"ALERT TABLE `" + getTableName() + "` RENAME TO `" + newTableName + "`"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> changeComment(@NotNull String newTableComment) {
|
||||||
|
return new SQLUpdateActionImpl(getManager(),
|
||||||
|
"ALERT TABLE `" + getTableName() + "` COMMENT '" + newTableComment + "'"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> setAutoIncrementIndex(int index) {
|
||||||
|
return new SQLUpdateActionImpl(getManager(),
|
||||||
|
"ALERT TABLE `" + getTableName() + "` AUTO_INCREMENT=" + index
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> addIndex(@NotNull IndexType indexType, @NotNull String indexName, @NotNull String columnName, @NotNull String... moreColumns) {
|
||||||
|
return createAction(
|
||||||
|
"ALERT TABLE `" + getTableName() + "` ADD "
|
||||||
|
+ TableCreateBuilderImpl.buildIndexSettings(indexType, indexName, columnName, moreColumns)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> dropIndex(@NotNull String indexName) {
|
||||||
|
return createAction(
|
||||||
|
"ALERT TABLE `" + getTableName() + "` DROP INDEX `" + indexName + "`"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> dropForeignKey(@NotNull String keySymbol) {
|
||||||
|
return createAction(
|
||||||
|
"ALERT TABLE `" + getTableName() + "` DROP FOREIGN KEY `" + keySymbol + "`"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> dropPrimaryKey() {
|
||||||
|
return createAction(
|
||||||
|
"ALERT TABLE `" + getTableName() + "` DROP PRIMARY KEY"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> addColumn(@NotNull String columnName, @NotNull String settings, @Nullable String afterColumn) {
|
||||||
|
return createAction(
|
||||||
|
"ALERT TABLE `" + getTableName() + "` ADD `" + columnName + "` " + settings
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> renameColumn(@NotNull String columnName, @NotNull String newName) {
|
||||||
|
return createAction(
|
||||||
|
"ALERT TABLE `" + getTableName() + "` RENAME COLUMN `" + columnName + "` TO `" + newName + "`"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> modifyColumn(@NotNull String columnName, @NotNull String settings) {
|
||||||
|
return createAction(
|
||||||
|
"ALERT TABLE `" + getTableName() + "` MODIFY COLUMN `" + columnName + "` " + settings
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> removeColumn(@NotNull String columnName) {
|
||||||
|
return createAction(
|
||||||
|
"ALERT TABLE `" + getTableName() + "` DROP `" + columnName + "`"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> setColumnDefault(@NotNull String columnName, @NotNull String defaultValue) {
|
||||||
|
return createAction(
|
||||||
|
"ALERT TABLE `" + getTableName() + "` ALERT `" + columnName + "` SET DEFAULT " + defaultValue
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SQLAction<Integer> removeColumnDefault(@NotNull String columnName) {
|
||||||
|
return createAction(
|
||||||
|
"ALERT TABLE `" + getTableName() + "` ALERT `" + columnName + "` DROP DEFAULT"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private SQLUpdateActionImpl createAction(@NotNull String sql) {
|
||||||
|
return new SQLUpdateActionImpl(getManager(), sql);
|
||||||
|
}
|
||||||
|
}
|
@ -3,9 +3,12 @@ package cc.carm.lib.easysql.builder.impl;
|
|||||||
import cc.carm.lib.easysql.action.SQLUpdateActionImpl;
|
import cc.carm.lib.easysql.action.SQLUpdateActionImpl;
|
||||||
import cc.carm.lib.easysql.api.action.SQLUpdateAction;
|
import cc.carm.lib.easysql.api.action.SQLUpdateAction;
|
||||||
import cc.carm.lib.easysql.api.builder.TableCreateBuilder;
|
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.builder.AbstractSQLBuilder;
|
import cc.carm.lib.easysql.builder.AbstractSQLBuilder;
|
||||||
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -13,17 +16,18 @@ import java.util.List;
|
|||||||
|
|
||||||
public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableCreateBuilder {
|
public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableCreateBuilder {
|
||||||
|
|
||||||
String tableName;
|
protected final @NotNull String tableName;
|
||||||
|
|
||||||
List<String> columns;
|
@NotNull List<String> columns = new ArrayList<>();
|
||||||
|
@NotNull List<String> indexes = new ArrayList<>();
|
||||||
|
@NotNull List<String> foreignKeys = new ArrayList<>();
|
||||||
|
|
||||||
String tableSettings;
|
@NotNull String tableSettings = defaultTablesSettings();
|
||||||
|
@Nullable String tableComment;
|
||||||
|
|
||||||
public TableCreateBuilderImpl(SQLManagerImpl manager, String tableName) {
|
public TableCreateBuilderImpl(SQLManagerImpl manager, @NotNull String tableName) {
|
||||||
super(manager);
|
super(manager);
|
||||||
this.tableName = tableName;
|
this.tableName = tableName;
|
||||||
this.columns = new ArrayList<>();
|
|
||||||
defaultTablesSettings();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -45,7 +49,22 @@ public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableC
|
|||||||
createSQL.append(columns.get(i));
|
createSQL.append(columns.get(i));
|
||||||
if (i != columns.size() - 1) createSQL.append(", ");
|
if (i != columns.size() - 1) createSQL.append(", ");
|
||||||
}
|
}
|
||||||
createSQL.append(") ").append(tableSettings);
|
|
||||||
|
for (int i = 0; i < indexes.size(); i++) {
|
||||||
|
createSQL.append(indexes.get(i));
|
||||||
|
if (i != indexes.size() - 1) createSQL.append(", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
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) {
|
||||||
|
createSQL.append(" COMMENT '").append(tableComment).append("'");
|
||||||
|
}
|
||||||
|
|
||||||
return new SQLUpdateActionImpl(getManager(), createSQL.toString());
|
return new SQLUpdateActionImpl(getManager(), createSQL.toString());
|
||||||
}
|
}
|
||||||
@ -56,6 +75,36 @@ public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableC
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TableCreateBuilder setIndex(@NotNull IndexType type, @Nullable String indexName,
|
||||||
|
@NotNull String columnName, @NotNull String... moreColumns) {
|
||||||
|
this.indexes.add(buildIndexSettings(type, indexName, columnName, moreColumns));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TableCreateBuilder addForeignKey(@NotNull String tableColumn, @Nullable String constraintName,
|
||||||
|
@NotNull String foreignTable, @NotNull String foreignColumn,
|
||||||
|
@Nullable ForeignKeyRule updateRule, @Nullable ForeignKeyRule deleteRule) {
|
||||||
|
StringBuilder keyBuilder = new StringBuilder();
|
||||||
|
|
||||||
|
keyBuilder.append("CONSTRAINT ");
|
||||||
|
if (constraintName == null) {
|
||||||
|
keyBuilder.append("`").append("fk_").append(tableColumn).append("_").append(foreignTable).append("`");
|
||||||
|
} else {
|
||||||
|
keyBuilder.append("`").append(constraintName).append("`");
|
||||||
|
}
|
||||||
|
keyBuilder.append(" ");
|
||||||
|
keyBuilder.append("FOREIGN KEY (`").append(tableColumn).append("`) ");
|
||||||
|
keyBuilder.append("REFERENCES `").append(foreignTable).append("`(`").append(foreignColumn).append("`)");
|
||||||
|
|
||||||
|
if (updateRule != null) keyBuilder.append(" ON UPDATE ").append(updateRule.getRuleName());
|
||||||
|
if (deleteRule != null) keyBuilder.append(" ON DELETE ").append(deleteRule.getRuleName());
|
||||||
|
|
||||||
|
this.foreignKeys.add(keyBuilder.toString());
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TableCreateBuilder setColumns(@NotNull String[] columns) {
|
public TableCreateBuilder setColumns(@NotNull String[] columns) {
|
||||||
this.columns = Arrays.asList(columns);
|
this.columns = Arrays.asList(columns);
|
||||||
@ -68,4 +117,37 @@ public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableC
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TableCreateBuilder setTableComment(@Nullable String comment) {
|
||||||
|
this.tableComment = comment;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static String buildIndexSettings(@NotNull IndexType indexType, @Nullable String indexName,
|
||||||
|
@NotNull String columnName, @NotNull String... moreColumns) {
|
||||||
|
|
||||||
|
StringBuilder indexBuilder = new StringBuilder();
|
||||||
|
|
||||||
|
indexBuilder.append(indexType.getName()).append(" ");
|
||||||
|
if (indexName != null) {
|
||||||
|
indexBuilder.append("`").append(indexName).append("`");
|
||||||
|
}
|
||||||
|
indexBuilder.append("(");
|
||||||
|
indexBuilder.append("`").append(columnName).append("`");
|
||||||
|
|
||||||
|
if (moreColumns.length > 0) {
|
||||||
|
indexBuilder.append(", ");
|
||||||
|
|
||||||
|
for (int i = 0; i < moreColumns.length; i++) {
|
||||||
|
indexBuilder.append(moreColumns[i]);
|
||||||
|
if (i != moreColumns.length - 1) indexBuilder.append(", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
indexBuilder.append(")");
|
||||||
|
|
||||||
|
return indexBuilder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cc.carm.lib.easysql.builder.impl;
|
package cc.carm.lib.easysql.builder.impl;
|
||||||
|
|
||||||
import cc.carm.lib.easysql.action.PreparedSQLUpdateActionImpl;
|
import cc.carm.lib.easysql.action.PreparedSQLUpdateActionImpl;
|
||||||
|
import cc.carm.lib.easysql.api.SQLAction;
|
||||||
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
|
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
|
||||||
import cc.carm.lib.easysql.api.builder.UpdateBuilder;
|
import cc.carm.lib.easysql.api.builder.UpdateBuilder;
|
||||||
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
import cc.carm.lib.easysql.manager.SQLManagerImpl;
|
||||||
@ -9,7 +10,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class UpdateBuilderImpl
|
public class UpdateBuilderImpl
|
||||||
extends AbstractConditionalBuilder<UpdateBuilder, PreparedSQLUpdateAction>
|
extends AbstractConditionalBuilder<UpdateBuilder, SQLAction<Integer>>
|
||||||
implements UpdateBuilder {
|
implements UpdateBuilder {
|
||||||
|
|
||||||
String tableName;
|
String tableName;
|
||||||
|
@ -129,6 +129,11 @@ public class SQLManagerImpl implements SQLManager {
|
|||||||
return new TableCreateBuilderImpl(this, tableName);
|
return new TableCreateBuilderImpl(this, tableName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TableAlertBuilder alterTable(@NotNull String tableName) {
|
||||||
|
return new TableAlterBuilderImpl(this, tableName);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public QueryBuilder createQuery() {
|
public QueryBuilder createQuery() {
|
||||||
return new QueryBuilderImpl(this);
|
return new QueryBuilderImpl(this);
|
||||||
|
@ -25,7 +25,15 @@ public class SQLQueryImpl implements SQLQuery {
|
|||||||
SQLManagerImpl sqlManager, QueryActionImpl queryAction,
|
SQLManagerImpl sqlManager, QueryActionImpl queryAction,
|
||||||
Connection connection, Statement statement, ResultSet resultSet
|
Connection connection, Statement statement, ResultSet resultSet
|
||||||
) {
|
) {
|
||||||
this.executeTime = System.currentTimeMillis();
|
this(sqlManager, queryAction, connection, statement, resultSet, System.currentTimeMillis());
|
||||||
|
}
|
||||||
|
|
||||||
|
public SQLQueryImpl(
|
||||||
|
SQLManagerImpl sqlManager, QueryActionImpl queryAction,
|
||||||
|
Connection connection, Statement statement, ResultSet resultSet,
|
||||||
|
long executeTime
|
||||||
|
) {
|
||||||
|
this.executeTime = executeTime;
|
||||||
this.sqlManager = sqlManager;
|
this.sqlManager = sqlManager;
|
||||||
this.queryAction = queryAction;
|
this.queryAction = queryAction;
|
||||||
this.connection = connection;
|
this.connection = connection;
|
||||||
|
@ -164,13 +164,19 @@ public class StatementUtil {
|
|||||||
preparedStatement.setNull(paramIndex, type);
|
preparedStatement.setNull(paramIndex, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 针对UUID特殊处理,避免元数据直接插入
|
// 针对UUID特殊处理,避免元数据直接传入
|
||||||
if (param instanceof UUID) {
|
if (param instanceof UUID) {
|
||||||
preparedStatement.setString(paramIndex, param.toString());
|
preparedStatement.setString(paramIndex, param.toString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 日期特殊处理,默认按照时间戳传入,避免毫秒丢失
|
// 针对StringBuilder或StringBuffer进行处理,避免元数据传入
|
||||||
|
if (param instanceof StringBuilder || param instanceof StringBuffer) {
|
||||||
|
preparedStatement.setString(paramIndex, param.toString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 日期特殊处理,默认按照时间戳传入,避免精度丢失
|
||||||
if (param instanceof java.util.Date) {
|
if (param instanceof java.util.Date) {
|
||||||
if (param instanceof Date) {
|
if (param instanceof Date) {
|
||||||
preparedStatement.setDate(paramIndex, (Date) param);
|
preparedStatement.setDate(paramIndex, (Date) param);
|
||||||
@ -188,16 +194,14 @@ public class StatementUtil {
|
|||||||
// BigDecimal的转换交给JDBC驱动处理
|
// BigDecimal的转换交给JDBC驱动处理
|
||||||
preparedStatement.setBigDecimal(paramIndex, (BigDecimal) param);
|
preparedStatement.setBigDecimal(paramIndex, (BigDecimal) param);
|
||||||
return;
|
return;
|
||||||
}
|
} else if (param instanceof BigInteger) {
|
||||||
if (param instanceof BigInteger) {
|
|
||||||
// BigInteger转为BigDecimal
|
|
||||||
preparedStatement.setBigDecimal(paramIndex, new BigDecimal((BigInteger) param));
|
preparedStatement.setBigDecimal(paramIndex, new BigDecimal((BigInteger) param));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 忽略其它数字类型,按照默认类型传入
|
// 其它数字类型按照默认类型传入
|
||||||
}
|
}
|
||||||
|
|
||||||
// 其它参数类型直接插入
|
// 其它参数类型直接传入
|
||||||
preparedStatement.setObject(paramIndex, param);
|
preparedStatement.setObject(paramIndex, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
91
pom.xml
91
pom.xml
@ -16,7 +16,7 @@
|
|||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>0.2.10</version>
|
<version>0.3.0-SNAPSHOT</version>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>easysql-api</module>
|
<module>easysql-api</module>
|
||||||
@ -38,6 +38,7 @@
|
|||||||
<name>Carm Jos</name>
|
<name>Carm Jos</name>
|
||||||
<email>carm@carm.cc</email>
|
<email>carm@carm.cc</email>
|
||||||
<url>https://www.carm.cc</url>
|
<url>https://www.carm.cc</url>
|
||||||
|
<timezone>Asia/Shanghai</timezone>
|
||||||
</developer>
|
</developer>
|
||||||
</developers>
|
</developers>
|
||||||
|
|
||||||
@ -45,6 +46,7 @@
|
|||||||
<connection>scm:git:git@github.com:CarmJos/EasySQL.git</connection>
|
<connection>scm:git:git@github.com:CarmJos/EasySQL.git</connection>
|
||||||
<developerConnection>scm:git:git@github.com:CarmJos/EasySQL.git</developerConnection>
|
<developerConnection>scm:git:git@github.com:CarmJos/EasySQL.git</developerConnection>
|
||||||
<url>https://github.com/CarmJos/EasySQL</url>
|
<url>https://github.com/CarmJos/EasySQL</url>
|
||||||
|
<tag>HEAD</tag>
|
||||||
</scm>
|
</scm>
|
||||||
|
|
||||||
<licenses>
|
<licenses>
|
||||||
@ -93,12 +95,11 @@
|
|||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
|
|
||||||
<downloadUrl>${project.url}/releases</downloadUrl>
|
<downloadUrl>${project.url}/releases</downloadUrl>
|
||||||
|
<site>
|
||||||
<repository>
|
<id>easysql-javadoc</id>
|
||||||
<id>github</id>
|
<name>EasySQL JavaDoc (on Github Pages)</name>
|
||||||
<name>GitHub Packages</name>
|
<url>https://carmjos.github.io/EasySQL</url>
|
||||||
<url>https://maven.pkg.github.com/CarmJos/EasySQL</url>
|
</site>
|
||||||
</repository>
|
|
||||||
|
|
||||||
</distributionManagement>
|
</distributionManagement>
|
||||||
|
|
||||||
@ -128,20 +129,39 @@
|
|||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
</plugin>
|
</plugin>
|
||||||
<!-- <plugin>-->
|
<plugin>
|
||||||
<!-- <groupId>org.apache.maven.plugins</groupId>-->
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<!-- <artifactId>maven-gpg-plugin</artifactId>-->
|
<artifactId>maven-gpg-plugin</artifactId>
|
||||||
<!-- <version>1.5</version>-->
|
<version>1.6</version>
|
||||||
<!-- <executions>-->
|
<executions>
|
||||||
<!-- <execution>-->
|
<execution>
|
||||||
<!-- <id>sign-artifacts</id>-->
|
<id>sign-artifacts</id>
|
||||||
<!-- <phase>verify</phase>-->
|
<phase>verify</phase>
|
||||||
<!-- <goals>-->
|
<goals>
|
||||||
<!-- <goal>sign</goal>-->
|
<goal>sign</goal>
|
||||||
<!-- </goals>-->
|
</goals>
|
||||||
<!-- </execution>-->
|
</execution>
|
||||||
<!-- </executions>-->
|
</executions>
|
||||||
<!-- </plugin>-->
|
<configuration>
|
||||||
|
<keyname>0x37986DF7</keyname>
|
||||||
|
<passphraseServerId>0x37986DF7</passphraseServerId>
|
||||||
|
<gpgArguments>
|
||||||
|
<arg>--pinentry-mode</arg>
|
||||||
|
<arg>loopback</arg>
|
||||||
|
</gpgArguments>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-release-plugin</artifactId>
|
||||||
|
<version>2.5.1</version>
|
||||||
|
<configuration>
|
||||||
|
<autoVersionSubmodules>true</autoVersionSubmodules>
|
||||||
|
<useReleaseProfile>false</useReleaseProfile>
|
||||||
|
<releaseProfiles>release</releaseProfiles>
|
||||||
|
<goals>deploy</goals>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|
||||||
<pluginManagement>
|
<pluginManagement>
|
||||||
@ -253,5 +273,34 @@
|
|||||||
|
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
<profiles>
|
||||||
|
|
||||||
|
<profile>
|
||||||
|
<id>ossrh</id>
|
||||||
|
<distributionManagement>
|
||||||
|
<snapshotRepository>
|
||||||
|
<id>ossrh</id>
|
||||||
|
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
|
||||||
|
</snapshotRepository>
|
||||||
|
|
||||||
|
<repository>
|
||||||
|
<id>ossrh</id>
|
||||||
|
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
|
||||||
|
</repository>
|
||||||
|
</distributionManagement>
|
||||||
|
</profile>
|
||||||
|
|
||||||
|
<profile>
|
||||||
|
<id>github</id>
|
||||||
|
<distributionManagement>
|
||||||
|
<repository>
|
||||||
|
<id>github</id>
|
||||||
|
<name>GitHub Packages</name>
|
||||||
|
<url>https://maven.pkg.github.com/CarmJos/EasySQL</url>
|
||||||
|
</repository>
|
||||||
|
</distributionManagement>
|
||||||
|
</profile>
|
||||||
|
|
||||||
|
</profiles>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
Loading…
Reference in New Issue
Block a user