1
mirror of https://github.com/CarmJos/EasySQL.git synced 2024-09-19 21:35:47 +00:00

[0.3.4] 对参数判断是否已加引号或反引号

This commit is contained in:
Carm Jos 2022-01-29 17:26:08 +08:00
parent 5e7519dc7a
commit 7acc2849ae
19 changed files with 100 additions and 68 deletions

View File

@ -5,7 +5,7 @@
<parent> <parent>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<artifactId>easysql-parent</artifactId> <artifactId>easysql-parent</artifactId>
<version>0.3.3</version> <version>0.3.4</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -11,11 +11,22 @@ import org.jetbrains.annotations.NotNull;
*/ */
public interface SQLBuilder { public interface SQLBuilder {
/** /**
* 得到承载该Builder的对应{@link SQLManager} * 得到承载该Builder的对应{@link SQLManager}
* *
* @return {@link SQLManager} * @return {@link SQLManager}
*/ */
@NotNull SQLManager getManager(); @NotNull SQLManager getManager();
static @NotNull String withBackQuote(@NotNull String str) {
str = str.trim();
return str.startsWith("`") && str.endsWith("`") ? str : "`" + str + "`";
}
static @NotNull String withQuote(@NotNull String str) {
str = str.trim();
return str.startsWith("'") && str.endsWith("'") ? str : "'" + str + "'";
}
} }

View File

@ -8,6 +8,10 @@ import cc.carm.lib.easysql.api.enums.NumberType;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import static cc.carm.lib.easysql.api.SQLBuilder.withBackQuote;
import static cc.carm.lib.easysql.api.SQLBuilder.withQuote;
public interface TableCreateBuilder extends SQLBuilder { public interface TableCreateBuilder extends SQLBuilder {
/** /**
@ -63,7 +67,7 @@ public interface TableCreateBuilder extends SQLBuilder {
* @return {@link TableCreateBuilder} * @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(withBackQuote(columnName) + " " + settings);
} }
/** /**
@ -76,7 +80,7 @@ public interface TableCreateBuilder extends SQLBuilder {
* @return {@link TableCreateBuilder} * @return {@link TableCreateBuilder}
*/ */
default TableCreateBuilder addColumn(@NotNull String columnName, @NotNull String settings, @NotNull String comments) { default TableCreateBuilder addColumn(@NotNull String columnName, @NotNull String settings, @NotNull String comments) {
return addColumn(columnName, settings + " COMMENT '" + comments + "'"); return addColumn(columnName, settings + " COMMENT " + withQuote(comments));
} }
/** /**
@ -91,7 +95,7 @@ public interface TableCreateBuilder extends SQLBuilder {
* @return {@link TableCreateBuilder} * @return {@link TableCreateBuilder}
*/ */
TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, @Nullable NumberType numberType, TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, @Nullable NumberType numberType,
boolean asPrimaryKey, boolean unsigned); boolean asPrimaryKey, boolean unsigned);
/** /**
* 为该表添加一个INT类型的自增主键列 * 为该表添加一个INT类型的自增主键列
@ -104,7 +108,7 @@ public interface TableCreateBuilder extends SQLBuilder {
* @return {@link TableCreateBuilder} * @return {@link TableCreateBuilder}
*/ */
default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName,
boolean asPrimaryKey, boolean unsigned) { boolean asPrimaryKey, boolean unsigned) {
return addAutoIncrementColumn(columnName, NumberType.INT, asPrimaryKey, unsigned); return addAutoIncrementColumn(columnName, NumberType.INT, asPrimaryKey, unsigned);
} }
@ -146,7 +150,7 @@ public interface TableCreateBuilder extends SQLBuilder {
* @return {@link TableCreateBuilder} * @return {@link TableCreateBuilder}
*/ */
default TableCreateBuilder setIndex(@NotNull String columnName, default TableCreateBuilder setIndex(@NotNull String columnName,
@NotNull IndexType type) { @NotNull IndexType type) {
return setIndex(type, null, columnName); return setIndex(type, null, columnName);
} }
@ -164,7 +168,7 @@ public interface TableCreateBuilder extends SQLBuilder {
* @return {@link TableCreateBuilder} * @return {@link TableCreateBuilder}
*/ */
TableCreateBuilder setIndex(@NotNull IndexType type, @Nullable String indexName, TableCreateBuilder setIndex(@NotNull IndexType type, @Nullable String indexName,
@NotNull String columnName, @NotNull String... moreColumns); @NotNull String columnName, @NotNull String... moreColumns);
/** /**
@ -197,7 +201,7 @@ public interface TableCreateBuilder extends SQLBuilder {
* @return {@link TableCreateBuilder} * @return {@link TableCreateBuilder}
*/ */
default TableCreateBuilder addForeignKey(@NotNull String tableColumn, default TableCreateBuilder addForeignKey(@NotNull String tableColumn,
@NotNull String foreignTable, @NotNull String foreignColumn) { @NotNull String foreignTable, @NotNull String foreignColumn) {
return addForeignKey(tableColumn, null, foreignTable, foreignColumn); return addForeignKey(tableColumn, null, foreignTable, foreignColumn);
} }
@ -217,7 +221,7 @@ public interface TableCreateBuilder extends SQLBuilder {
* @return {@link TableCreateBuilder} * @return {@link TableCreateBuilder}
*/ */
default TableCreateBuilder addForeignKey(@NotNull String tableColumn, @Nullable String constraintName, default TableCreateBuilder addForeignKey(@NotNull String tableColumn, @Nullable String constraintName,
@NotNull String foreignTable, @NotNull String foreignColumn) { @NotNull String foreignTable, @NotNull String foreignColumn) {
return addForeignKey(tableColumn, constraintName, foreignTable, foreignColumn, null, null); return addForeignKey(tableColumn, constraintName, foreignTable, foreignColumn, null, null);
} }
@ -239,8 +243,8 @@ public interface TableCreateBuilder extends SQLBuilder {
* @return {@link TableCreateBuilder} * @return {@link TableCreateBuilder}
*/ */
TableCreateBuilder addForeignKey(@NotNull String tableColumn, @Nullable String constraintName, TableCreateBuilder addForeignKey(@NotNull String tableColumn, @Nullable String constraintName,
@NotNull String foreignTable, @NotNull String foreignColumn, @NotNull String foreignTable, @NotNull String foreignColumn,
@Nullable ForeignKeyRule updateRule, @Nullable ForeignKeyRule deleteRule); @Nullable ForeignKeyRule updateRule, @Nullable ForeignKeyRule deleteRule);
default String defaultTablesSettings() { default String defaultTablesSettings() {
return "ENGINE=InnoDB DEFAULT CHARSET=utf8"; return "ENGINE=InnoDB DEFAULT CHARSET=utf8";

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easysql-parent</artifactId> <artifactId>easysql-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>0.3.3</version> <version>0.3.4</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -65,7 +65,7 @@ public abstract class AbstractSQLAction<T> implements SQLAction<T> {
} }
protected void outputDebugMessage() { protected void outputDebugMessage() {
getManager().debug("#" + getShortID() + " -> { " + getSQLContent() + " }"); getManager().debug("# " + getShortID() + " -> { " + getSQLContent() + " }");
} }
@Override @Override

View File

@ -55,9 +55,9 @@ public class SQLUpdateBatchActionImpl
@Override @Override
protected void outputDebugMessage() { protected void outputDebugMessage() {
getManager().debug("#" + getShortID() + " -> {"); getManager().debug("# " + getShortID() + " -> [");
for (String content : getSQLContents()) getManager().debug(" " + content); for (String content : getSQLContents()) getManager().debug(" { " + content + " }");
getManager().debug("}"); getManager().debug("]");
} }

View File

@ -14,6 +14,8 @@ import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import static cc.carm.lib.easysql.api.SQLBuilder.withBackQuote;
public abstract class AbstractConditionalBuilder<B extends ConditionalBuilder<B, T>, T extends SQLAction<?>> public abstract class AbstractConditionalBuilder<B extends ConditionalBuilder<B, T>, T extends SQLAction<?>>
extends AbstractSQLBuilder implements ConditionalBuilder<B, T> { extends AbstractSQLBuilder implements ConditionalBuilder<B, T> {
@ -53,7 +55,7 @@ public abstract class AbstractConditionalBuilder<B extends ConditionalBuilder<B,
public B addCondition( public B addCondition(
@NotNull String queryName, @NotNull String operator, @Nullable Object queryValue @NotNull String queryName, @NotNull String operator, @Nullable Object queryValue
) { ) {
addCondition("`" + queryName + "` " + operator + " ?"); addCondition(withBackQuote(queryName) + " " + operator + " ?");
this.conditionParams.add(queryValue); this.conditionParams.add(queryValue);
return getThis(); return getThis();
} }
@ -74,7 +76,7 @@ public abstract class AbstractConditionalBuilder<B extends ConditionalBuilder<B,
@Override @Override
public B addNotNullCondition(@NotNull String queryName) { public B addNotNullCondition(@NotNull String queryName) {
return addCondition("`" + queryName + "` IS NOT NULL"); return addCondition(withBackQuote(queryName) + " IS NOT NULL");
} }
@ -84,7 +86,7 @@ public abstract class AbstractConditionalBuilder<B extends ConditionalBuilder<B,
) { ) {
if (startDate == null && endDate == null) return getThis(); // 都不限定时间不用判断了 if (startDate == null && endDate == null) return getThis(); // 都不限定时间不用判断了
if (startDate != null) { if (startDate != null) {
addCondition("`" + queryName + "` BETWEEN ? AND ?"); addCondition(withBackQuote(queryName) + " BETWEEN ? AND ?");
this.conditionParams.add(startDate); this.conditionParams.add(startDate);
if (endDate != null) { if (endDate != null) {
this.conditionParams.add(endDate); this.conditionParams.add(endDate);

View File

@ -7,6 +7,8 @@ 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;
import static cc.carm.lib.easysql.api.SQLBuilder.withBackQuote;
public class DeleteBuilderImpl public class DeleteBuilderImpl
extends AbstractConditionalBuilder<DeleteBuilder, SQLAction<Integer>> extends AbstractConditionalBuilder<DeleteBuilder, SQLAction<Integer>>
implements DeleteBuilder { implements DeleteBuilder {
@ -23,7 +25,7 @@ public class DeleteBuilderImpl
StringBuilder sqlBuilder = new StringBuilder(); StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("DELETE FROM `").append(getTableName()).append("`"); sqlBuilder.append("DELETE FROM ").append(withBackQuote(getTableName()));
if (hasConditions()) sqlBuilder.append(" ").append(buildConditionSQL()); if (hasConditions()) sqlBuilder.append(" ").append(buildConditionSQL());
if (limit > 0) sqlBuilder.append(" ").append(buildLimitSQL()); if (limit > 0) sqlBuilder.append(" ").append(buildLimitSQL());

View File

@ -9,6 +9,8 @@ import org.jetbrains.annotations.NotNull;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import static cc.carm.lib.easysql.api.SQLBuilder.withBackQuote;
public abstract class InsertBuilderImpl<T extends SQLAction<?>> public abstract class InsertBuilderImpl<T extends SQLAction<?>>
extends AbstractSQLBuilder implements InsertBuilder<T> { extends AbstractSQLBuilder implements InsertBuilder<T> {
@ -23,10 +25,10 @@ public abstract class InsertBuilderImpl<T extends SQLAction<?>>
int valueLength = columnNames.size(); int valueLength = columnNames.size();
StringBuilder sqlBuilder = new StringBuilder(); StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("INSERT IGNORE INTO `").append(tableName).append("`("); sqlBuilder.append("INSERT IGNORE INTO ").append(withBackQuote(tableName)).append("(");
Iterator<String> iterator = columnNames.iterator(); Iterator<String> iterator = columnNames.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
sqlBuilder.append("`").append(iterator.next()).append("`"); sqlBuilder.append(withBackQuote(iterator.next()));
if (iterator.hasNext()) sqlBuilder.append(", "); if (iterator.hasNext()) sqlBuilder.append(", ");
} }

View File

@ -9,6 +9,8 @@ import org.jetbrains.annotations.NotNull;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import static cc.carm.lib.easysql.api.SQLBuilder.withBackQuote;
public abstract class ReplaceBuilderImpl<T extends SQLAction<?>> public abstract class ReplaceBuilderImpl<T extends SQLAction<?>>
extends AbstractSQLBuilder implements ReplaceBuilder<T> { extends AbstractSQLBuilder implements ReplaceBuilder<T> {
@ -23,10 +25,10 @@ public abstract class ReplaceBuilderImpl<T extends SQLAction<?>>
int valueLength = columnNames.size(); int valueLength = columnNames.size();
StringBuilder sqlBuilder = new StringBuilder(); StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("REPLACE INTO `").append(tableName).append("`("); sqlBuilder.append("REPLACE INTO ").append(withBackQuote(tableName)).append("(");
Iterator<String> iterator = columnNames.iterator(); Iterator<String> iterator = columnNames.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
sqlBuilder.append("`").append(iterator.next()).append("`"); sqlBuilder.append(withBackQuote(iterator.next()));
if (iterator.hasNext()) sqlBuilder.append(", "); if (iterator.hasNext()) sqlBuilder.append(", ");
} }

View File

@ -9,6 +9,9 @@ import cc.carm.lib.easysql.manager.SQLManagerImpl;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import static cc.carm.lib.easysql.api.SQLBuilder.withBackQuote;
import static cc.carm.lib.easysql.api.SQLBuilder.withQuote;
public class TableAlterBuilderImpl extends AbstractSQLBuilder implements TableAlterBuilder { public class TableAlterBuilderImpl extends AbstractSQLBuilder implements TableAlterBuilder {
protected final @NotNull String tableName; protected final @NotNull String tableName;
@ -25,28 +28,28 @@ public class TableAlterBuilderImpl extends AbstractSQLBuilder implements TableAl
@Override @Override
public SQLAction<Integer> renameTo(@NotNull String newTableName) { public SQLAction<Integer> renameTo(@NotNull String newTableName) {
return new SQLUpdateActionImpl(getManager(), return new SQLUpdateActionImpl(getManager(),
"ALTER TABLE `" + getTableName() + "` RENAME TO `" + newTableName + "`" "ALTER TABLE " + withBackQuote(getTableName()) + " RENAME TO " + withBackQuote(newTableName) + ""
); );
} }
@Override @Override
public SQLAction<Integer> changeComment(@NotNull String newTableComment) { public SQLAction<Integer> changeComment(@NotNull String newTableComment) {
return new SQLUpdateActionImpl(getManager(), return new SQLUpdateActionImpl(getManager(),
"ALTER TABLE `" + getTableName() + "` COMMENT '" + newTableComment + "'" "ALTER TABLE " + withBackQuote(getTableName()) + " COMMENT " + withQuote(newTableComment)
); );
} }
@Override @Override
public SQLAction<Integer> setAutoIncrementIndex(int index) { public SQLAction<Integer> setAutoIncrementIndex(int index) {
return new SQLUpdateActionImpl(getManager(), return new SQLUpdateActionImpl(getManager(),
"ALTER TABLE `" + getTableName() + "` AUTO_INCREMENT=" + index "ALTER TABLE " + withBackQuote(getTableName()) + " AUTO_INCREMENT=" + index
); );
} }
@Override @Override
public SQLAction<Integer> addIndex(@NotNull IndexType indexType, @NotNull String indexName, @NotNull String columnName, @NotNull String... moreColumns) { public SQLAction<Integer> addIndex(@NotNull IndexType indexType, @NotNull String indexName, @NotNull String columnName, @NotNull String... moreColumns) {
return createAction( return createAction(
"ALTER TABLE `" + getTableName() + "` ADD " "ALTER TABLE " + withBackQuote(getTableName()) + " ADD "
+ TableCreateBuilderImpl.buildIndexSettings(indexType, indexName, columnName, moreColumns) + TableCreateBuilderImpl.buildIndexSettings(indexType, indexName, columnName, moreColumns)
); );
} }
@ -54,21 +57,21 @@ public class TableAlterBuilderImpl extends AbstractSQLBuilder implements TableAl
@Override @Override
public SQLAction<Integer> dropIndex(@NotNull String indexName) { public SQLAction<Integer> dropIndex(@NotNull String indexName) {
return createAction( return createAction(
"ALTER TABLE `" + getTableName() + "` DROP INDEX `" + indexName + "`" "ALTER TABLE " + withBackQuote(getTableName()) + " DROP INDEX " + withBackQuote(indexName)
); );
} }
@Override @Override
public SQLAction<Integer> dropForeignKey(@NotNull String keySymbol) { public SQLAction<Integer> dropForeignKey(@NotNull String keySymbol) {
return createAction( return createAction(
"ALTER TABLE `" + getTableName() + "` DROP FOREIGN KEY `" + keySymbol + "`" "ALTER TABLE " + withBackQuote(getTableName()) + " DROP FOREIGN KEY " + withBackQuote(keySymbol)
); );
} }
@Override @Override
public SQLAction<Integer> dropPrimaryKey() { public SQLAction<Integer> dropPrimaryKey() {
return createAction( return createAction(
"ALTER TABLE `" + getTableName() + "` DROP PRIMARY KEY" "ALTER TABLE " + withBackQuote(getTableName()) + " DROP PRIMARY KEY"
); );
} }
@ -77,14 +80,14 @@ public class TableAlterBuilderImpl extends AbstractSQLBuilder implements TableAl
String orderSettings = null; String orderSettings = null;
if (afterColumn != null) { if (afterColumn != null) {
if (afterColumn.length() > 0) { if (afterColumn.length() > 0) {
orderSettings = "AFTER `" + afterColumn + "`"; orderSettings = "AFTER " + withBackQuote(afterColumn);
} else { } else {
orderSettings = "FIRST"; orderSettings = "FIRST";
} }
} }
return createAction( return createAction(
"ALTER TABLE `" + getTableName() + "` ADD `" + columnName + "` " + settings "ALTER TABLE " + withBackQuote(getTableName()) + " ADD " + withBackQuote(columnName) + " " + settings
+ (orderSettings != null ? " " + orderSettings : "") + (orderSettings != null ? " " + orderSettings : "")
); );
} }
@ -92,35 +95,35 @@ public class TableAlterBuilderImpl extends AbstractSQLBuilder implements TableAl
@Override @Override
public SQLAction<Integer> renameColumn(@NotNull String columnName, @NotNull String newName) { public SQLAction<Integer> renameColumn(@NotNull String columnName, @NotNull String newName) {
return createAction( return createAction(
"ALTER TABLE `" + getTableName() + "` RENAME COLUMN `" + columnName + "` TO `" + newName + "`" "ALTER TABLE " + withBackQuote(getTableName()) + " RENAME COLUMN " + withBackQuote(columnName) + " TO " + withBackQuote(newName)
); );
} }
@Override @Override
public SQLAction<Integer> modifyColumn(@NotNull String columnName, @NotNull String settings) { public SQLAction<Integer> modifyColumn(@NotNull String columnName, @NotNull String settings) {
return createAction( return createAction(
"ALTER TABLE `" + getTableName() + "` MODIFY COLUMN `" + columnName + "` " + settings "ALTER TABLE " + withBackQuote(getTableName()) + " MODIFY COLUMN " + withBackQuote(columnName) + " " + settings
); );
} }
@Override @Override
public SQLAction<Integer> removeColumn(@NotNull String columnName) { public SQLAction<Integer> removeColumn(@NotNull String columnName) {
return createAction( return createAction(
"ALTER TABLE `" + getTableName() + "` DROP `" + columnName + "`" "ALTER TABLE " + withBackQuote(getTableName()) + " DROP " + withBackQuote(columnName)
); );
} }
@Override @Override
public SQLAction<Integer> setColumnDefault(@NotNull String columnName, @NotNull String defaultValue) { public SQLAction<Integer> setColumnDefault(@NotNull String columnName, @NotNull String defaultValue) {
return createAction( return createAction(
"ALTER TABLE `" + getTableName() + "` ALTER `" + columnName + "` SET DEFAULT " + defaultValue "ALTER TABLE " + withBackQuote(getTableName()) + " ALTER " + withBackQuote(columnName) + " SET DEFAULT " + defaultValue
); );
} }
@Override @Override
public SQLAction<Integer> removeColumnDefault(@NotNull String columnName) { public SQLAction<Integer> removeColumnDefault(@NotNull String columnName) {
return createAction( return createAction(
"ALTER TABLE `" + getTableName() + "` ALTER `" + columnName + "` DROP DEFAULT" "ALTER TABLE " + withBackQuote(getTableName()) + " ALTER " + withBackQuote(columnName) + " DROP DEFAULT"
); );
} }

View File

@ -15,6 +15,9 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import static cc.carm.lib.easysql.api.SQLBuilder.withBackQuote;
import static cc.carm.lib.easysql.api.SQLBuilder.withQuote;
public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableCreateBuilder { public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableCreateBuilder {
protected final @NotNull String tableName; protected final @NotNull String tableName;
@ -44,7 +47,7 @@ public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableC
@Override @Override
public SQLUpdateAction build() { public SQLUpdateAction build() {
StringBuilder createSQL = new StringBuilder(); StringBuilder createSQL = new StringBuilder();
createSQL.append("CREATE TABLE IF NOT EXISTS `").append(tableName).append("`"); createSQL.append("CREATE TABLE IF NOT EXISTS ").append(withBackQuote(tableName));
createSQL.append("("); createSQL.append("(");
createSQL.append(String.join(", ", columns)); createSQL.append(String.join(", ", columns));
if (indexes.size() > 0) { if (indexes.size() > 0) {
@ -58,7 +61,7 @@ public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableC
createSQL.append(") ").append(getTableSettings()); createSQL.append(") ").append(getTableSettings());
if (tableComment != null) { if (tableComment != null) {
createSQL.append(" COMMENT '").append(tableComment).append("'"); createSQL.append(" COMMENT ").append(withQuote(tableComment));
} }
return new SQLUpdateActionImpl(getManager(), createSQL.toString()); return new SQLUpdateActionImpl(getManager(), createSQL.toString());
@ -72,7 +75,7 @@ public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableC
@Override @Override
public TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, @Nullable NumberType numberType, public TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, @Nullable NumberType numberType,
boolean asPrimaryKey, boolean unsigned) { boolean asPrimaryKey, boolean unsigned) {
return addColumn(columnName, return addColumn(columnName,
(numberType == null ? NumberType.INT : numberType).name() (numberType == null ? NumberType.INT : numberType).name()
+ (unsigned ? " UNSIGNED " : " ") + (unsigned ? " UNSIGNED " : " ")
@ -82,26 +85,26 @@ public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableC
@Override @Override
public TableCreateBuilder setIndex(@NotNull IndexType type, @Nullable String indexName, public TableCreateBuilder setIndex(@NotNull IndexType type, @Nullable String indexName,
@NotNull String columnName, @NotNull String... moreColumns) { @NotNull String columnName, @NotNull String... moreColumns) {
this.indexes.add(buildIndexSettings(type, indexName, columnName, moreColumns)); this.indexes.add(buildIndexSettings(type, indexName, columnName, moreColumns));
return this; return this;
} }
@Override @Override
public TableCreateBuilder addForeignKey(@NotNull String tableColumn, @Nullable String constraintName, public TableCreateBuilder addForeignKey(@NotNull String tableColumn, @Nullable String constraintName,
@NotNull String foreignTable, @NotNull String foreignColumn, @NotNull String foreignTable, @NotNull String foreignColumn,
@Nullable ForeignKeyRule updateRule, @Nullable ForeignKeyRule deleteRule) { @Nullable ForeignKeyRule updateRule, @Nullable ForeignKeyRule deleteRule) {
StringBuilder keyBuilder = new StringBuilder(); StringBuilder keyBuilder = new StringBuilder();
keyBuilder.append("CONSTRAINT "); keyBuilder.append("CONSTRAINT ");
if (constraintName == null) { if (constraintName == null) {
keyBuilder.append("`").append("fk_").append(tableColumn).append("_").append(foreignTable).append("`"); keyBuilder.append(withBackQuote("fk_" + tableColumn + "_" + foreignTable));
} else { } else {
keyBuilder.append("`").append(constraintName).append("`"); keyBuilder.append(withBackQuote(constraintName));
} }
keyBuilder.append(" "); keyBuilder.append(" ");
keyBuilder.append("FOREIGN KEY (`").append(tableColumn).append("`) "); keyBuilder.append("FOREIGN KEY (").append(withBackQuote(tableColumn)).append(") ");
keyBuilder.append("REFERENCES `").append(foreignTable).append("`(`").append(foreignColumn).append("`)"); keyBuilder.append("REFERENCES ").append(withBackQuote(foreignTable)).append("(").append(withBackQuote(foreignColumn)).append(")");
if (updateRule != null) keyBuilder.append(" ON UPDATE ").append(updateRule.getRuleName()); if (updateRule != null) keyBuilder.append(" ON UPDATE ").append(updateRule.getRuleName());
if (deleteRule != null) keyBuilder.append(" ON DELETE ").append(deleteRule.getRuleName()); if (deleteRule != null) keyBuilder.append(" ON DELETE ").append(deleteRule.getRuleName());
@ -129,16 +132,16 @@ public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableC
} }
protected static String buildIndexSettings(@NotNull IndexType indexType, @Nullable String indexName, protected static String buildIndexSettings(@NotNull IndexType indexType, @Nullable String indexName,
@NotNull String columnName, @NotNull String... moreColumns) { @NotNull String columnName, @NotNull String... moreColumns) {
StringBuilder indexBuilder = new StringBuilder(); StringBuilder indexBuilder = new StringBuilder();
indexBuilder.append(indexType.getName()).append(" "); indexBuilder.append(indexType.getName()).append(" ");
if (indexName != null) { if (indexName != null) {
indexBuilder.append("`").append(indexName).append("`"); indexBuilder.append(withBackQuote(indexName));
} }
indexBuilder.append("("); indexBuilder.append("(");
indexBuilder.append("`").append(columnName).append("`"); indexBuilder.append(withBackQuote(columnName));
if (moreColumns.length > 0) { if (moreColumns.length > 0) {
indexBuilder.append(", "); indexBuilder.append(", ");

View File

@ -7,6 +7,8 @@ import cc.carm.lib.easysql.manager.SQLManagerImpl;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import static cc.carm.lib.easysql.api.SQLBuilder.withBackQuote;
public class TableQueryBuilderImpl public class TableQueryBuilderImpl
extends AbstractConditionalBuilder<TableQueryBuilder, PreparedQueryAction> extends AbstractConditionalBuilder<TableQueryBuilder, PreparedQueryAction>
implements TableQueryBuilder { implements TableQueryBuilder {
@ -33,15 +35,14 @@ public class TableQueryBuilderImpl
} else { } else {
for (int i = 0; i < columns.length; i++) { for (int i = 0; i < columns.length; i++) {
String name = columns[i]; String name = columns[i];
sqlBuilder.append("`").append(name).append("`"); sqlBuilder.append(withBackQuote(name));
if (i != columns.length - 1) { if (i != columns.length - 1) {
sqlBuilder.append(","); sqlBuilder.append(",");
} }
} }
} }
sqlBuilder.append(" ").append("FROM").append(" "); sqlBuilder.append(" ").append("FROM").append(" ").append(withBackQuote(tableName));
sqlBuilder.append("`").append(tableName).append("`");
if (hasConditions()) sqlBuilder.append(" ").append(buildConditionSQL()); if (hasConditions()) sqlBuilder.append(" ").append(buildConditionSQL());
@ -71,7 +72,7 @@ public class TableQueryBuilderImpl
@Override @Override
public TableQueryBuilder orderBy(@NotNull String columnName, boolean asc) { public TableQueryBuilder orderBy(@NotNull String columnName, boolean asc) {
this.orderBy = "ORDER BY `" + columnName + "` " + (asc ? "ASC" : "DESC"); this.orderBy = "ORDER BY " + withBackQuote(columnName) + " " + (asc ? "ASC" : "DESC");
return this; return this;
} }

View File

@ -9,6 +9,8 @@ import org.jetbrains.annotations.NotNull;
import java.util.*; import java.util.*;
import static cc.carm.lib.easysql.api.SQLBuilder.withBackQuote;
public class UpdateBuilderImpl public class UpdateBuilderImpl
extends AbstractConditionalBuilder<UpdateBuilder, SQLAction<Integer>> extends AbstractConditionalBuilder<UpdateBuilder, SQLAction<Integer>>
implements UpdateBuilder { implements UpdateBuilder {
@ -28,11 +30,11 @@ public class UpdateBuilderImpl
StringBuilder sqlBuilder = new StringBuilder(); StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("UPDATE `").append(getTableName()).append("` SET "); sqlBuilder.append("UPDATE ").append(withBackQuote(getTableName())).append(" SET ");
Iterator<String> iterator = this.columnNames.iterator(); Iterator<String> iterator = this.columnNames.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
sqlBuilder.append("`").append(iterator.next()).append("` = ?"); sqlBuilder.append(withBackQuote(iterator.next())).append(" = ?");
if (iterator.hasNext()) sqlBuilder.append(" , "); if (iterator.hasNext()) sqlBuilder.append(" , ");
} }
List<Object> allParams = new ArrayList<>(this.columnValues); List<Object> allParams = new ArrayList<>(this.columnValues);

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easysql-parent</artifactId> <artifactId>easysql-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>0.3.3</version> <version>0.3.4</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easysql-parent</artifactId> <artifactId>easysql-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>0.3.3</version> <version>0.3.4</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -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.3.3</version> <version>0.3.4</version>
<modules> <modules>
<module>easysql-api</module> <module>easysql-api</module>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easysql-parent</artifactId> <artifactId>easysql-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>0.3.3</version> <version>0.3.4</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>easysql-parent</artifactId> <artifactId>easysql-parent</artifactId>
<groupId>cc.carm.lib</groupId> <groupId>cc.carm.lib</groupId>
<version>0.3.3</version> <version>0.3.4</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>