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

[v0.2.6] 版本更新

- [U] 优化 ConditionalBuilder 的使用方式。
- [A] 为 TableQueryBuilder 添加分表查询limit方法。
This commit is contained in:
2022-01-07 23:01:44 +08:00
parent 50b36d8430
commit 5601d1288c
10 changed files with 86 additions and 39 deletions
@@ -49,6 +49,7 @@ public interface SQLManager {
/**
* 执行一条不需要返回结果的SQL语句(多用于UPDATE、REPLACE、DELETE方法)
* 该方法使用 Statement 实现,请注意SQL注入风险!
*
* @param sql SQL语句内容
* @return 更新的行数
@@ -79,6 +80,7 @@ public interface SQLManager {
/**
* 执行多条不需要返回结果的SQL。
* 该方法使用 Statement 实现,请注意SQL注入风险!
*
* @param sql SQL语句内容
* @param moreSQL 更多SQL语句内容
@@ -7,36 +7,36 @@ import org.jetbrains.annotations.Nullable;
import java.util.Date;
import java.util.LinkedHashMap;
public interface ConditionalBuilder<T> extends SQLBuilder {
public interface ConditionalBuilder<B extends ConditionalBuilder<B, T>, T> extends SQLBuilder {
T build();
ConditionalBuilder<T> setLimit(int limit);
B setLimit(int limit);
ConditionalBuilder<T> setConditions(@Nullable String condition);
B setConditions(@Nullable String condition);
ConditionalBuilder<T> setConditions(LinkedHashMap<@NotNull String, @Nullable Object> conditionSQLs);
B setConditions(LinkedHashMap<@NotNull String, @Nullable Object> conditionSQLs);
ConditionalBuilder<T> addCondition(@Nullable String condition);
B addCondition(@Nullable String condition);
ConditionalBuilder<T> addCondition(@NotNull String queryName, @NotNull String operator, @Nullable Object queryValue);
B addCondition(@NotNull String queryName, @NotNull String operator, @Nullable Object queryValue);
default ConditionalBuilder<T> addCondition(@NotNull String queryName, @Nullable Object queryValue) {
default B addCondition(@NotNull String queryName, @Nullable Object queryValue) {
return addCondition(queryName, "=", queryValue);
}
ConditionalBuilder<T> addCondition(@NotNull String[] queryNames, @Nullable Object[] queryValues);
B addCondition(@NotNull String[] queryNames, @Nullable Object[] queryValues);
ConditionalBuilder<T> addNotNullCondition(@NotNull String queryName);
B addNotNullCondition(@NotNull String queryName);
default ConditionalBuilder<T> addTimeCondition(@NotNull String queryName, long startMillis, long endMillis) {
default B 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);
B addTimeCondition(@NotNull String queryName, @Nullable java.util.Date startDate, @Nullable java.util.Date endDate);
}
@@ -2,7 +2,7 @@ package cc.carm.lib.easysql.api.builder;
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
public interface DeleteBuilder extends ConditionalBuilder<PreparedSQLUpdateAction> {
public interface DeleteBuilder extends ConditionalBuilder<DeleteBuilder, PreparedSQLUpdateAction> {
String getTableName();
@@ -8,11 +8,12 @@ import org.jetbrains.annotations.NotNull;
public interface QueryBuilder extends SQLBuilder {
/**
* 通过一条 SQL语句创建查询
* 通过一条 SQL语句创建查询
* 该方法使用 Statement 实现,请注意SQL注入风险!
*
* @param sql SQL语句
* @return {@link QueryAction}
* @deprecated 存在SQL注入风险,使用 {@link QueryBuilder#withPreparedSQL(String)}
* @deprecated 存在SQL注入风险,建议使用 {@link QueryBuilder#withPreparedSQL(String)}
*/
@Deprecated
QueryAction withSQL(@NotNull String sql);
@@ -3,10 +3,16 @@ 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> {
public interface TableQueryBuilder extends ConditionalBuilder<TableQueryBuilder, PreparedQueryAction> {
@NotNull String getTableName();
/**
* 选定用于查询的列名
*
* @param columnNames 列名
* @return {@link TableQueryBuilder}
*/
TableQueryBuilder selectColumns(@NotNull String... columnNames);
/**
@@ -18,4 +24,14 @@ public interface TableQueryBuilder extends ConditionalBuilder<PreparedQueryActio
*/
TableQueryBuilder orderBy(@NotNull String columnName, boolean asc);
/**
* 限制查询条数,用于分页查询。
*
* @param start 开始数
* @param end 结束条数
* @return {@link TableQueryBuilder}
* @since 0.2.6
*/
TableQueryBuilder setPageLimit(int start, int end);
}
@@ -4,7 +4,7 @@ import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
import java.util.LinkedHashMap;
public interface UpdateBuilder extends ConditionalBuilder<PreparedSQLUpdateAction> {
public interface UpdateBuilder extends ConditionalBuilder<UpdateBuilder, PreparedSQLUpdateAction> {
String getTableName();