|
@@ -42,7 +42,9 @@ public class QueryCondition implements IFormat {
|
|
|
public String toSql() {
|
|
|
|
|
|
String connectStr = queryConditionConnectList.stream().map(IFormat::toSql).collect(Collectors.joining());
|
|
|
+
|
|
|
if (ObjectUtil.isEmpty(value)) {
|
|
|
+
|
|
|
if (ObjectUtil.isEmpty(connectStr)) {
|
|
|
return StringPool.EMPTY;
|
|
|
}
|
|
@@ -72,6 +74,21 @@ public class QueryCondition implements IFormat {
|
|
|
joiner.add(logic);
|
|
|
SqlUtil.putValue(joiner, value);
|
|
|
}
|
|
|
+ case SqlConstant.LIKE, SqlConstant.NOT_LIKE -> {
|
|
|
+ joiner.add(logic);
|
|
|
+ joiner.add("concat('%',");
|
|
|
+ SqlUtil.putValue(joiner, value);
|
|
|
+ joiner.add(",'%')");
|
|
|
+ }
|
|
|
+ case SqlConstant.IN, SqlConstant.NOT_IN -> {
|
|
|
+ joiner.add(logic);
|
|
|
+ List<Object> inList = new ArrayList<>((Collection<?>) value);
|
|
|
+ joiner.add("(");
|
|
|
+ for (int i = 0; i < inList.size(); i++) {
|
|
|
+ SqlUtil.putValue(joiner, inList.get(i));
|
|
|
+ joiner.add(inList.size() == i + 1 ? ")" : ",");
|
|
|
+ }
|
|
|
+ }
|
|
|
case SqlConstant.BETWEEN, SqlConstant.NOT_BETWEEN -> {
|
|
|
joiner.add(logic);
|
|
|
Object[] valueObj = (Object[]) value;
|
|
@@ -79,34 +96,19 @@ public class QueryCondition implements IFormat {
|
|
|
joiner.add(SqlConstant.AND);
|
|
|
SqlUtil.putValue(joiner, valueObj[1]);
|
|
|
}
|
|
|
- case SqlConstant.LIKE, SqlConstant.NOT_LIKE -> {
|
|
|
- joiner.add(logic);
|
|
|
- joiner.add("concat('%',");
|
|
|
- SqlUtil.putValue(joiner, value);
|
|
|
- joiner.add(",'%')");
|
|
|
- }
|
|
|
case SqlConstant.LIKE_LEFT, SqlConstant.NOT_LIKE_LEFT -> {
|
|
|
- joiner.add(SqlConstant.LIKE);
|
|
|
+ joiner.add(logic.equals(SqlConstant.LIKE_LEFT) ? SqlConstant.LIKE : SqlConstant.NOT_LIKE);
|
|
|
joiner.add("concat('%',");
|
|
|
SqlUtil.putValue(joiner, value);
|
|
|
joiner.add(")");
|
|
|
}
|
|
|
case SqlConstant.LIKE_RIGHT, SqlConstant.NOT_LIKE_RIGHT -> {
|
|
|
- joiner.add(SqlConstant.LIKE);
|
|
|
+ joiner.add(logic.equals(SqlConstant.LIKE_RIGHT) ? SqlConstant.LIKE : SqlConstant.NOT_LIKE);
|
|
|
joiner.add("concat(");
|
|
|
SqlUtil.putValue(joiner, value);
|
|
|
joiner.add(",'%')");
|
|
|
}
|
|
|
case SqlConstant.IS_NULL, SqlConstant.IS_NOT_NULL -> joiner.add(logic);
|
|
|
- case SqlConstant.IN, SqlConstant.NOT_IN -> {
|
|
|
- joiner.add(logic);
|
|
|
- List<Object> inList = new ArrayList<>((Collection<?>) value);
|
|
|
- joiner.add("(");
|
|
|
- for (int i = 0; i < inList.size(); i++) {
|
|
|
- SqlUtil.putValue(joiner, inList.get(i));
|
|
|
- joiner.add(inList.size() == i + 1 ? ")" : ",");
|
|
|
- }
|
|
|
- }
|
|
|
default -> throw new IllegalArgumentException("未知方法");
|
|
|
}
|
|
|
|