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

[0.3.7] 版本更新

- `[A]` 为 UpdateBuilder 添加 `#addColumnValue(String,Object)` 方法。
- `[A]` 补充部分Builder的JavaDoc。
This commit is contained in:
2022-02-11 21:12:32 +08:00
parent 0efd526c75
commit bcf9d257a9
12 changed files with 184 additions and 109 deletions
+1 -1
View File
@@ -5,7 +5,7 @@
<parent>
<artifactId>easysql-parent</artifactId>
<groupId>cc.carm.lib</groupId>
<version>0.3.6</version>
<version>0.3.7</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -53,40 +53,40 @@ public abstract class AbstractConditionalBuilder<B extends ConditionalBuilder<B,
@Override
public B addCondition(
@NotNull String queryName, @NotNull String operator, @Nullable Object queryValue
@NotNull String columnName, @NotNull String operator, @Nullable Object queryValue
) {
addCondition(withBackQuote(queryName) + " " + operator + " ?");
addCondition(withBackQuote(columnName) + " " + operator + " ?");
this.conditionParams.add(queryValue);
return getThis();
}
@Override
public B addCondition(
@NotNull String[] queryNames, @Nullable Object[] queryValues
@NotNull String[] columnNames, @Nullable Object[] queryValues
) {
if (queryValues == null || queryNames.length != queryValues.length) {
if (queryValues == null || columnNames.length != queryValues.length) {
throw new RuntimeException("queryNames are not match with queryValues");
}
for (int i = 0; i < queryNames.length; i++) {
addCondition(queryNames[i], queryValues[i]);
for (int i = 0; i < columnNames.length; i++) {
addCondition(columnNames[i], queryValues[i]);
}
return getThis();
}
@Override
public B addNotNullCondition(@NotNull String queryName) {
return addCondition(withBackQuote(queryName) + " IS NOT NULL");
public B addNotNullCondition(@NotNull String columnName) {
return addCondition(withBackQuote(columnName) + " IS NOT NULL");
}
@Override
public B addTimeCondition(
@NotNull String queryName, @Nullable Date startDate, @Nullable Date endDate
@NotNull String columnName, @Nullable Date startDate, @Nullable Date endDate
) {
if (startDate == null && endDate == null) return getThis(); // 都不限定时间,不用判断了
if (startDate != null) {
addCondition(withBackQuote(queryName) + " BETWEEN ? AND ?");
addCondition(withBackQuote(columnName) + " BETWEEN ? AND ?");
this.conditionParams.add(startDate);
if (endDate != null) {
this.conditionParams.add(endDate);
@@ -100,7 +100,7 @@ public abstract class AbstractConditionalBuilder<B extends ConditionalBuilder<B,
}
}
} else {
addCondition(queryName, "<=", endDate);
addCondition(columnName, "<=", endDate);
}
return getThis();
}
@@ -6,78 +6,85 @@ import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
import cc.carm.lib.easysql.api.builder.UpdateBuilder;
import cc.carm.lib.easysql.manager.SQLManagerImpl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import static cc.carm.lib.easysql.api.SQLBuilder.withBackQuote;
public class UpdateBuilderImpl
extends AbstractConditionalBuilder<UpdateBuilder, SQLAction<Integer>>
implements UpdateBuilder {
extends AbstractConditionalBuilder<UpdateBuilder, SQLAction<Integer>>
implements UpdateBuilder {
String tableName;
String tableName;
List<String> columnNames;
List<Object> columnValues;
@NotNull LinkedHashMap<String, Object> columnData;
public UpdateBuilderImpl(@NotNull SQLManagerImpl manager, @NotNull String tableName) {
super(manager);
this.tableName = tableName;
}
public UpdateBuilderImpl(@NotNull SQLManagerImpl manager, @NotNull String tableName) {
super(manager);
this.tableName = tableName;
this.columnData = new LinkedHashMap<>();
}
@Override
public PreparedSQLUpdateAction build() {
@Override
public PreparedSQLUpdateAction build() {
StringBuilder sqlBuilder = new StringBuilder();
StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("UPDATE ").append(withBackQuote(getTableName())).append(" SET ");
sqlBuilder.append("UPDATE ").append(withBackQuote(getTableName())).append(" SET ");
Iterator<String> iterator = this.columnNames.iterator();
while (iterator.hasNext()) {
sqlBuilder.append(withBackQuote(iterator.next())).append(" = ?");
if (iterator.hasNext()) sqlBuilder.append(" , ");
}
List<Object> allParams = new ArrayList<>(this.columnValues);
Iterator<String> iterator = this.columnData.keySet().iterator();
while (iterator.hasNext()) {
sqlBuilder.append(withBackQuote(iterator.next())).append(" = ?");
if (iterator.hasNext()) sqlBuilder.append(" , ");
}
List<Object> allParams = new ArrayList<>(this.columnData.values());
if (hasConditions()) {
sqlBuilder.append(" ").append(buildConditionSQL());
allParams.addAll(getConditionParams());
}
if (hasConditions()) {
sqlBuilder.append(" ").append(buildConditionSQL());
allParams.addAll(getConditionParams());
}
if (limit > 0) sqlBuilder.append(" ").append(buildLimitSQL());
if (limit > 0) sqlBuilder.append(" ").append(buildLimitSQL());
return new PreparedSQLUpdateActionImpl(getManager(), sqlBuilder.toString(), allParams);
}
return new PreparedSQLUpdateActionImpl(getManager(), sqlBuilder.toString(), allParams);
}
@Override
public String getTableName() {
return tableName;
}
@Override
public String getTableName() {
return tableName;
}
@Override
public UpdateBuilder setColumnValues(LinkedHashMap<String, Object> columnData) {
this.columnNames = new ArrayList<>();
this.columnValues = new ArrayList<>();
columnData.forEach((name, value) -> {
this.columnNames.add(name);
this.columnValues.add(value);
});
return this;
}
@Override
public UpdateBuilder addColumnValue(@NotNull String columnName, Object columnValue) {
this.columnData.put(columnName, columnValue);
return this;
}
@Override
public UpdateBuilder setColumnValues(String[] columnNames, Object[] columnValues) {
if (columnNames.length != columnValues.length) {
throw new RuntimeException("columnNames are not match with columnValues");
}
this.columnNames = Arrays.asList(columnNames);
this.columnValues = Arrays.asList(columnValues);
return this;
}
@Override
public UpdateBuilder setColumnValues(LinkedHashMap<String, Object> columnData) {
this.columnData = columnData;
return this;
}
@Override
public UpdateBuilder setColumnValues(@NotNull String[] columnNames, @Nullable Object[] columnValues) {
if (columnNames.length != columnValues.length) {
throw new RuntimeException("columnNames are not match with columnValues");
}
LinkedHashMap<String, Object> columnData = new LinkedHashMap<>();
for (int i = 0; i < columnNames.length; i++) {
columnData.put(columnNames[i], columnValues[i]);
}
return setColumnValues(columnData);
}
@Override
protected UpdateBuilder getThis() {
return this;
}
@Override
protected UpdateBuilder getThis() {
return this;
}
}