1
mirror of https://github.com/CarmJos/EasySQL.git synced 2026-06-04 15:28:20 +08:00

初始版本完成

This commit is contained in:
2021-12-14 05:39:38 +08:00
parent 0f20ae2913
commit 6f278ee8b0
49 changed files with 2312 additions and 54 deletions
+2 -6
View File
@@ -5,14 +5,14 @@
<parent>
<groupId>cc.carm.lib</groupId>
<artifactId>easysql-parent</artifactId>
<version>1.0.0</version>
<version>v0.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>easysql-api</artifactId>
<packaging>jar</packaging>
<name>EasySQL-API</name>
<name>00-EasySQL-API</name>
<description>EasySQL的接口部分。用于打包到公共项目的API中,避免项目过大。</description>
<url>https://github.com/CarmJos/${project.parent.name}</url>
@@ -57,10 +57,6 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
</plugins>
</build>
@@ -0,0 +1,60 @@
package cc.carm.lib.easysql.api;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.sql.SQLException;
import java.util.UUID;
import java.util.function.Consumer;
public interface SQLAction<T> {
@NotNull UUID getActionUUID();
@NotNull String getShortID();
long getCreateTime();
@NotNull String getSQLContent();
@NotNull SQLManager getManager();
@NotNull T execute() throws SQLException;
@Nullable
default T execute(@Nullable Consumer<SQLException> exceptionHandler) {
if (exceptionHandler == null) exceptionHandler = defaultExceptionHandler();
T value = null;
try {
value = execute();
} catch (SQLException exception) {
exceptionHandler.accept(exception);
}
return value;
}
default void executeAsync() {
executeAsync(null);
}
default void executeAsync(Consumer<T> success) {
executeAsync(success, null);
}
void executeAsync(Consumer<T> success, Consumer<SQLException> failure);
SQLAction<T> handleException(Consumer<SQLException> failure);
@NotNull Consumer<SQLException> getExceptionHandler();
default Consumer<SQLException> defaultExceptionHandler() {
return Throwable::printStackTrace;
}
default Consumer<T> defaultResultHandler() {
return t -> {
};
}
}
@@ -0,0 +1,9 @@
package cc.carm.lib.easysql.api;
import org.jetbrains.annotations.NotNull;
public interface SQLBuilder {
@NotNull SQLManager getManager();
}
@@ -1,7 +1,94 @@
package cc.carm.lib.easysql.api;
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateBatchAction;
import cc.carm.lib.easysql.api.builder.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public interface SQLManager {
boolean isDebugMode();
void setDebugMode(boolean enable);
/**
* 得到连接池源
*
* @return DataSource
*/
@NotNull DataSource getDataSource();
/**
* 得到一个数据库连接实例
*
* @return Connection
*/
@NotNull Connection getConnection() throws SQLException;
/**
* 得到正使用的查询。
*
* @return 查询列表
*/
@NotNull Map<UUID, SQLQuery> getActiveQuery();
/**
* 执行一条不需要返回结果的SQL语句(多用于UPDATE、REPLACE、DELETE方法)
*
* @param sql SQL语句内容
* @return 更新的行数
*/
@Nullable Integer executeSQL(String sql);
/**
* 执行一条不需要返回结果的SQL更改(UPDATE、REPLACE、DELETE)
*
* @param sql SQL语句内容
* @return 更新的行数
*/
@Nullable Integer executeSQL(String sql, Object[] params);
/**
* 执行多条不需要返回结果的SQL更改(UPDATE、REPLACE、DELETE)
*
* @param sql SQL语句内容
* @return 对应参数返回的行数
*/
@Nullable List<Integer> executeSQLBatch(String sql, Iterable<Object[]> paramsBatch);
/**
* 执行多条不需要返回结果的SQL。
*
* @param sql SQL语句内容
* @return 对应参数返回的行数
*/
@Nullable List<Integer> executeSQLBatch(@NotNull String sql, String... moreSQL);
@Nullable List<Integer> executeSQLBatch(@NotNull Iterable<String> sqlBatch);
TableCreateBuilder createTable(@NotNull String tableName);
QueryBuilder createQuery();
InsertBuilder<PreparedSQLUpdateBatchAction> createInsertBatch(@NotNull String tableName);
InsertBuilder<PreparedSQLUpdateAction> createInsert(@NotNull String tableName);
ReplaceBuilder<PreparedSQLUpdateBatchAction> createReplaceBatch(@NotNull String tableName);
ReplaceBuilder<PreparedSQLUpdateAction> createReplace(@NotNull String tableName);
UpdateBuilder createUpdate(@NotNull String tableName);
DeleteBuilder createDelete(@NotNull String tableName);
}
@@ -0,0 +1,40 @@
package cc.carm.lib.easysql.api;
import cc.carm.lib.easysql.api.action.query.QueryAction;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public interface SQLQuery extends AutoCloseable {
/**
* 获取该查询创建的时间
*
* @return 创建时间
*/
long getExecuteTime();
SQLManager getManager();
QueryAction getAction();
ResultSet getResultSet();
/**
* 得到设定的SQL语句
*
* @return SQL语句
*/
String getSQLContent();
/**
* 关闭所有内容
*/
void close();
Statement getStatement();
Connection getConnection();
}
@@ -0,0 +1,7 @@
package cc.carm.lib.easysql.api.action;
public interface PreparedSQLUpdateAction extends SQLUpdateAction {
PreparedSQLUpdateAction setParams(Object... params);
}
@@ -0,0 +1,19 @@
package cc.carm.lib.easysql.api.action;
import cc.carm.lib.easysql.api.SQLAction;
import java.util.List;
public interface PreparedSQLUpdateBatchAction extends SQLAction<List<Integer>> {
PreparedSQLUpdateBatchAction setAllParams(Iterable<Object[]> allParams);
PreparedSQLUpdateBatchAction addParamsBatch(Object... params);
PreparedSQLUpdateBatchAction setKeyIndex(int keyColumnIndex);
default PreparedSQLUpdateBatchAction defaultKeyIndex() {
return setKeyIndex(-1); // will return changed lines number
}
}
@@ -0,0 +1,13 @@
package cc.carm.lib.easysql.api.action;
import cc.carm.lib.easysql.api.SQLAction;
public interface SQLUpdateAction extends SQLAction<Integer> {
SQLUpdateAction setKeyIndex(int keyColumnIndex);
default SQLUpdateAction defaultKeyIndex() {
return setKeyIndex(-1); // will return changed lines number
}
}
@@ -0,0 +1,12 @@
package cc.carm.lib.easysql.api.action;
import cc.carm.lib.easysql.api.SQLAction;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public interface SQLUpdateBatchAction extends SQLAction<List<Integer>> {
SQLUpdateBatchAction addBatch(@NotNull String sql);
}
@@ -0,0 +1,16 @@
package cc.carm.lib.easysql.api.action.query;
import org.jetbrains.annotations.Nullable;
import java.sql.PreparedStatement;
import java.util.function.Consumer;
public interface PreparedQueryAction extends QueryAction {
PreparedQueryAction setParams(@Nullable Object... params);
PreparedQueryAction setParams(@Nullable Iterable<Object> params);
PreparedQueryAction handleStatement(@Nullable Consumer<PreparedStatement> statement);
}
@@ -0,0 +1,8 @@
package cc.carm.lib.easysql.api.action.query;
import cc.carm.lib.easysql.api.SQLAction;
import cc.carm.lib.easysql.api.SQLQuery;
public interface QueryAction extends SQLAction<SQLQuery> {
}
@@ -0,0 +1,42 @@
package cc.carm.lib.easysql.api.builder;
import cc.carm.lib.easysql.api.SQLBuilder;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Date;
import java.util.LinkedHashMap;
public interface ConditionalBuilder<T> extends SQLBuilder {
T build();
ConditionalBuilder<T> setLimit(int limit);
ConditionalBuilder<T> setConditions(@Nullable String condition);
ConditionalBuilder<T> setConditions(LinkedHashMap<@NotNull String, @Nullable Object> conditionSQLs);
ConditionalBuilder<T> addCondition(@Nullable String condition);
ConditionalBuilder<T> addNotNullCondition(@NotNull String queryName);
ConditionalBuilder<T> addCondition(@NotNull String queryName, @NotNull String operator, @Nullable Object queryValue);
default ConditionalBuilder<T> addCondition(@NotNull String queryName, @Nullable Object queryValue) {
return addCondition(queryName, "=", queryValue);
}
ConditionalBuilder<T> addCondition(@NotNull String[] queryNames, @Nullable Object[] queryValues);
default ConditionalBuilder<T> addTimeCondition(@NotNull String queryName, long startMillis, long endMillis) {
return addTimeCondition(queryName,
startMillis > 0 ? new Date(startMillis) : null,
endMillis > 0 ? new Date(endMillis) : null
);
}
ConditionalBuilder<T> addTimeCondition(@NotNull String queryName, @Nullable java.util.Date startDate, @Nullable java.util.Date endDate);
}
@@ -0,0 +1,9 @@
package cc.carm.lib.easysql.api.builder;
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
public interface DeleteBuilder extends ConditionalBuilder<PreparedSQLUpdateAction> {
String getTableName();
}
@@ -0,0 +1,19 @@
package cc.carm.lib.easysql.api.builder;
import java.util.Arrays;
import java.util.List;
public interface InsertBuilder<T> {
String getTableName();
InsertBuilder<T> setTableName(String tableName);
T setColumnNames(List<String> columnNames);
default T setColumnNames(String... columnNames) {
return setColumnNames(columnNames == null ? null : Arrays.asList(columnNames));
}
}
@@ -0,0 +1,16 @@
package cc.carm.lib.easysql.api.builder;
import cc.carm.lib.easysql.api.SQLBuilder;
import cc.carm.lib.easysql.api.action.query.PreparedQueryAction;
import cc.carm.lib.easysql.api.action.query.QueryAction;
import org.jetbrains.annotations.NotNull;
public interface QueryBuilder extends SQLBuilder {
QueryAction withSQL(@NotNull String sql);
PreparedQueryAction withPreparedSQL(@NotNull String sql);
TableQueryBuilder inTable(@NotNull String tableName);
}
@@ -0,0 +1,19 @@
package cc.carm.lib.easysql.api.builder;
import java.util.Arrays;
import java.util.List;
public interface ReplaceBuilder<T> {
String getTableName();
ReplaceBuilder<T> setTableName(String tableName);
T setColumnNames(List<String> columnNames);
default T setColumnNames(String... columnNames) {
return setColumnNames(columnNames == null ? null : Arrays.asList(columnNames));
}
}
@@ -0,0 +1,32 @@
package cc.carm.lib.easysql.api.builder;
import cc.carm.lib.easysql.api.SQLBuilder;
import cc.carm.lib.easysql.api.action.SQLUpdateAction;
import org.jetbrains.annotations.NotNull;
public interface TableCreateBuilder extends SQLBuilder {
@NotNull String getTableName();
TableCreateBuilder setTableName(@NotNull String tableName);
@NotNull String getTableSettings();
TableCreateBuilder setTableSettings(@NotNull String settings);
SQLUpdateAction build();
default TableCreateBuilder addColumn(@NotNull String columnName, @NotNull String settings) {
return addColumn("`" + columnName + "` " + settings);
}
TableCreateBuilder addColumn(@NotNull String column);
TableCreateBuilder setColumns(@NotNull String... columns);
default TableCreateBuilder defaultTablesSettings() {
return setTableSettings("ENGINE=InnoDB DEFAULT CHARSET=utf8");
}
}
@@ -0,0 +1,12 @@
package cc.carm.lib.easysql.api.builder;
import cc.carm.lib.easysql.api.action.query.PreparedQueryAction;
import org.jetbrains.annotations.NotNull;
public interface TableQueryBuilder extends ConditionalBuilder<PreparedQueryAction> {
@NotNull String getTableName();
TableQueryBuilder selectColumns(@NotNull String... columnNames);
}
@@ -0,0 +1,20 @@
package cc.carm.lib.easysql.api.builder;
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
import java.util.LinkedHashMap;
public interface UpdateBuilder extends ConditionalBuilder<PreparedSQLUpdateAction> {
String getTableName();
UpdateBuilder setColumnValues(LinkedHashMap<String, Object> columnData);
UpdateBuilder setColumnValues(String[] columnNames, Object[] columnValues);
default UpdateBuilder setColumnValues(String columnName, Object columnValue) {
return setColumnValues(new String[]{columnName}, new Object[]{columnValue});
}
}
@@ -0,0 +1,9 @@
package cc.carm.lib.easysql.api.enums;
public enum ReturnedType {
AUTO_INCREASE_KEY,
CHANGED_LINES
}
@@ -0,0 +1,72 @@
package cc.carm.lib.easysql.api.util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimeDateUtils {
public static DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public TimeDateUtils() {
}
public static String getCurrentTime() {
return getFormat().format(new Date());
}
public static String getTimeString(long timeMillis) {
return getFormat().format(new Date(timeMillis));
}
public static String getTimeString(Date time) {
return getFormat().format(time);
}
public static long getTimeMillis(String timeString) {
if (timeString == null) {
return -1L;
} else {
try {
return format.parse(timeString).getTime();
} catch (ParseException var2) {
return -1L;
}
}
}
public static Date getTimeDate(String timeString) {
if (timeString == null) {
return null;
} else {
try {
return format.parse(timeString);
} catch (ParseException var2) {
return null;
}
}
}
public static String toDHMSStyle(long allSeconds) {
long days = allSeconds / 86400L;
long hours = allSeconds % 86400L / 3600L;
long minutes = allSeconds % 3600L / 60L;
long seconds = allSeconds % 60L;
String DateTimes;
if (days > 0L) {
DateTimes = days + "" + (hours > 0L ? hours + "小时" : "") + (minutes > 0L ? minutes + "分钟" : "") + (seconds > 0L ? seconds + "" : "");
} else if (hours > 0L) {
DateTimes = hours + "小时" + (minutes > 0L ? minutes + "分钟" : "") + (seconds > 0L ? seconds + "" : "");
} else if (minutes > 0L) {
DateTimes = minutes + "分钟" + (seconds > 0L ? seconds + "" : "");
} else {
DateTimes = seconds + "";
}
return DateTimes;
}
public static DateFormat getFormat() {
return format;
}
}
@@ -0,0 +1,15 @@
package cc.carm.lib.easysql.api.util;
import java.util.UUID;
public class UUIDUtil {
public static UUID toUUID(String s) {
if (s.length() == 36) {
return UUID.fromString(s);
} else {
return UUID.fromString(s.substring(0, 8) + '-' + s.substring(8, 12) + '-' + s.substring(12, 16) + '-' + s.substring(16, 20) + '-' + s.substring(20));
}
}
}