|
@@ -3,6 +3,7 @@ package org.example.join.domain;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|
import org.example.join.util.SqlConstant;
|
|
import org.example.join.util.SqlConstant;
|
|
|
|
+import org.example.join.util.SqlUtil;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.Collection;
|
|
@@ -31,20 +32,6 @@ public class QueryCondition implements IFormat {
|
|
this.queryConditionConnectList = queryConditionConnectList;
|
|
this.queryConditionConnectList = queryConditionConnectList;
|
|
}
|
|
}
|
|
|
|
|
|
- private static void putParam(Map<String, Object> paramMap, StringJoiner joiner, Object value) {
|
|
|
|
- String mapKey = SqlConstant.SQL_PARAM + (paramMap.size() + 1);
|
|
|
|
- joiner.add(StringPool.HASH_LEFT_BRACE + mapKey + StringPool.RIGHT_BRACE);
|
|
|
|
- paramMap.put(mapKey, value);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private static void putValue(Map<String, String> tableAliasMap, Map<String, Object> paramMap, StringJoiner joiner, Object value) {
|
|
|
|
- if (value instanceof IQueryColumn) {
|
|
|
|
- joiner.add(((IQueryColumn) value).toSql(tableAliasMap, paramMap));
|
|
|
|
- } else {
|
|
|
|
- putParam(paramMap, joiner, value);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
public QueryCondition and(QueryCondition queryCondition) {
|
|
public QueryCondition and(QueryCondition queryCondition) {
|
|
QueryCondition newQueryCondition = copy();
|
|
QueryCondition newQueryCondition = copy();
|
|
newQueryCondition.queryConditionConnectList.add(new QueryConditionConnect(SqlConstant.AND, queryCondition));
|
|
newQueryCondition.queryConditionConnectList.add(new QueryConditionConnect(SqlConstant.AND, queryCondition));
|
|
@@ -94,26 +81,26 @@ public class QueryCondition implements IFormat {
|
|
case SqlConstant.BETWEEN, SqlConstant.NOT_BETWEEN -> {
|
|
case SqlConstant.BETWEEN, SqlConstant.NOT_BETWEEN -> {
|
|
joiner.add(logic);
|
|
joiner.add(logic);
|
|
Object[] valueObj = (Object[]) value;
|
|
Object[] valueObj = (Object[]) value;
|
|
- putValue(tableAliasMap, paramMap, joiner, valueObj[0]);
|
|
|
|
|
|
+ SqlUtil.putValue(tableAliasMap, paramMap, joiner, valueObj[0]);
|
|
joiner.add(SqlConstant.AND);
|
|
joiner.add(SqlConstant.AND);
|
|
- putValue(tableAliasMap, paramMap, joiner, valueObj[1]);
|
|
|
|
|
|
+ SqlUtil.putValue(tableAliasMap, paramMap, joiner, valueObj[1]);
|
|
}
|
|
}
|
|
case SqlConstant.LIKE, SqlConstant.NOT_LIKE -> {
|
|
case SqlConstant.LIKE, SqlConstant.NOT_LIKE -> {
|
|
joiner.add(logic);
|
|
joiner.add(logic);
|
|
joiner.add("concat('%',");
|
|
joiner.add("concat('%',");
|
|
- putValue(tableAliasMap, paramMap, joiner, value);
|
|
|
|
|
|
+ SqlUtil.putValue(tableAliasMap, paramMap, joiner, value);
|
|
joiner.add(",'%')");
|
|
joiner.add(",'%')");
|
|
}
|
|
}
|
|
case SqlConstant.LIKE_LEFT, SqlConstant.NOT_LIKE_LEFT -> {
|
|
case SqlConstant.LIKE_LEFT, SqlConstant.NOT_LIKE_LEFT -> {
|
|
joiner.add(SqlConstant.LIKE);
|
|
joiner.add(SqlConstant.LIKE);
|
|
joiner.add("concat('%',");
|
|
joiner.add("concat('%',");
|
|
- putValue(tableAliasMap, paramMap, joiner, value);
|
|
|
|
|
|
+ SqlUtil.putValue(tableAliasMap, paramMap, joiner, value);
|
|
joiner.add(")");
|
|
joiner.add(")");
|
|
}
|
|
}
|
|
case SqlConstant.LIKE_RIGHT, SqlConstant.NOT_LIKE_RIGHT -> {
|
|
case SqlConstant.LIKE_RIGHT, SqlConstant.NOT_LIKE_RIGHT -> {
|
|
joiner.add(SqlConstant.LIKE);
|
|
joiner.add(SqlConstant.LIKE);
|
|
joiner.add("concat(");
|
|
joiner.add("concat(");
|
|
- putValue(tableAliasMap, paramMap, joiner, value);
|
|
|
|
|
|
+ SqlUtil.putValue(tableAliasMap, paramMap, joiner, value);
|
|
joiner.add(",'%')");
|
|
joiner.add(",'%')");
|
|
}
|
|
}
|
|
case SqlConstant.IS_NULL, SqlConstant.IS_NOT_NULL -> joiner.add(logic);
|
|
case SqlConstant.IS_NULL, SqlConstant.IS_NOT_NULL -> joiner.add(logic);
|
|
@@ -124,7 +111,7 @@ public class QueryCondition implements IFormat {
|
|
Object[] array = inValue.toArray();
|
|
Object[] array = inValue.toArray();
|
|
joiner.add("(");
|
|
joiner.add("(");
|
|
for (int i = 0; i < size; i++) {
|
|
for (int i = 0; i < size; i++) {
|
|
- putValue(tableAliasMap, paramMap, joiner, array[i]);
|
|
|
|
|
|
+ SqlUtil.putValue(tableAliasMap, paramMap, joiner, array[i]);
|
|
if (i == size - 1) {
|
|
if (i == size - 1) {
|
|
joiner.add(")");
|
|
joiner.add(")");
|
|
} else {
|
|
} else {
|
|
@@ -134,7 +121,7 @@ public class QueryCondition implements IFormat {
|
|
}
|
|
}
|
|
default -> {
|
|
default -> {
|
|
joiner.add(logic);
|
|
joiner.add(logic);
|
|
- putParam(paramMap, joiner, value);
|
|
|
|
|
|
+ SqlUtil.putParam(paramMap, joiner, value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|