This commit is contained in:
@@ -16,17 +16,17 @@ package org.redkale.source;
|
|||||||
public enum FilterExpress {
|
public enum FilterExpress {
|
||||||
|
|
||||||
EQUAL("="),
|
EQUAL("="),
|
||||||
|
IGNORECASEEQUAL("="),//不区分大小写的 =
|
||||||
NOTEQUAL("<>"),
|
NOTEQUAL("<>"),
|
||||||
|
IGNORECASENOTEQUAL("="),//不区分大小写的 <>
|
||||||
GREATERTHAN(">"),
|
GREATERTHAN(">"),
|
||||||
LESSTHAN("<"),
|
LESSTHAN("<"),
|
||||||
GREATERTHANOREQUALTO(">="),
|
GREATERTHANOREQUALTO(">="),
|
||||||
LESSTHANOREQUALTO("<="),
|
LESSTHANOREQUALTO("<="),
|
||||||
|
|
||||||
STARTSWITH("LIKE"),
|
STARTSWITH("LIKE"),
|
||||||
NOTSTARTSWITH("NOT LIKE"),
|
NOTSTARTSWITH("NOT LIKE"),
|
||||||
ENDSWITH("LIKE"),
|
ENDSWITH("LIKE"),
|
||||||
NOTENDSWITH("NOT LIKE"),
|
NOTENDSWITH("NOT LIKE"),
|
||||||
|
|
||||||
LIKE("LIKE"),
|
LIKE("LIKE"),
|
||||||
NOTLIKE("NOT LIKE"),
|
NOTLIKE("NOT LIKE"),
|
||||||
IGNORECASELIKE("LIKE"), //不区分大小写的 LIKE
|
IGNORECASELIKE("LIKE"), //不区分大小写的 LIKE
|
||||||
|
|||||||
@@ -332,7 +332,7 @@ public class FilterNode {
|
|||||||
if (express == NOTCONTAIN) return info.notcontainSQL.replace("${column}", info.getSQLColumn(talis, column)).replace("${keystr}", val);
|
if (express == NOTCONTAIN) return info.notcontainSQL.replace("${column}", info.getSQLColumn(talis, column)).replace("${keystr}", val);
|
||||||
if (express == IGNORECASENOTCONTAIN) return info.notcontainSQL.replace("${column}", "LOWER(" + info.getSQLColumn(talis, column) + ")").replace("${keystr}", val);
|
if (express == IGNORECASENOTCONTAIN) return info.notcontainSQL.replace("${column}", "LOWER(" + info.getSQLColumn(talis, column) + ")").replace("${keystr}", val);
|
||||||
|
|
||||||
if (express == IGNORECASELIKE || express == IGNORECASENOTLIKE) {
|
if (express == IGNORECASEEQUAL || express == IGNORECASENOTEQUAL || express == IGNORECASELIKE || express == IGNORECASENOTLIKE) {
|
||||||
sb.append("LOWER(").append(info.getSQLColumn(talis, column)).append(')');
|
sb.append("LOWER(").append(info.getSQLColumn(talis, column)).append(')');
|
||||||
if (fk) val = "LOWER(" + info.getSQLColumn(talis, ((FilterKey) val0).getColumn()) + ')';
|
if (fk) val = "LOWER(" + info.getSQLColumn(talis, ((FilterKey) val0).getColumn()) + ')';
|
||||||
} else {
|
} else {
|
||||||
@@ -558,7 +558,6 @@ public class FilterNode {
|
|||||||
return field + " != null";
|
return field + " != null";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (attr == null) return null;
|
|
||||||
if (val0 == null) return null;
|
if (val0 == null) return null;
|
||||||
|
|
||||||
final Class atype = attr.type();
|
final Class atype = attr.type();
|
||||||
@@ -702,6 +701,36 @@ public class FilterNode {
|
|||||||
return field + ' ' + express.value() + ' ' + formatToString(val);
|
return field + ' ' + express.value() + ' ' + formatToString(val);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
case IGNORECASEEQUAL:
|
||||||
|
return fk ? new Predicate<T>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(T t) {
|
||||||
|
Object rs = attr.get(t);
|
||||||
|
Object rs2 = fkattr.get(t);
|
||||||
|
if (rs == null && rs2 == null) return true;
|
||||||
|
if (rs == null || rs2 == null) return false;
|
||||||
|
return Objects.equals(rs.toString().toLowerCase(), rs2.toString().toLowerCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "LOWER(" + field + ") " + express.value() + " LOWER(" + fkattr.field() + ')';
|
||||||
|
}
|
||||||
|
} : new Predicate<T>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(T t) {
|
||||||
|
Object rs = attr.get(t);
|
||||||
|
if (rs == null) return false;
|
||||||
|
return val.toString().equalsIgnoreCase(rs.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "LOWER(" + field + ") " + express.value() + ' ' + formatToString(val);
|
||||||
|
}
|
||||||
|
};
|
||||||
case NOTEQUAL:
|
case NOTEQUAL:
|
||||||
return fk ? new Predicate<T>() {
|
return fk ? new Predicate<T>() {
|
||||||
|
|
||||||
@@ -726,6 +755,36 @@ public class FilterNode {
|
|||||||
return field + ' ' + express.value() + ' ' + formatToString(val);
|
return field + ' ' + express.value() + ' ' + formatToString(val);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
case IGNORECASENOTEQUAL:
|
||||||
|
return fk ? new Predicate<T>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(T t) {
|
||||||
|
Object rs = attr.get(t);
|
||||||
|
Object rs2 = fkattr.get(t);
|
||||||
|
if (rs == null && rs2 == null) return false;
|
||||||
|
if (rs == null || rs2 == null) return true;
|
||||||
|
return !Objects.equals(rs.toString().toLowerCase(), rs2.toString().toLowerCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "LOWER(" + field + ") " + express.value() + " LOWER(" + fkattr.field() + ')';
|
||||||
|
}
|
||||||
|
} : new Predicate<T>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(T t) {
|
||||||
|
Object rs = attr.get(t);
|
||||||
|
if (rs == null) return true;
|
||||||
|
return !val.toString().equalsIgnoreCase(rs.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "LOWER(" + field + ") " + express.value() + ' ' + formatToString(val);
|
||||||
|
}
|
||||||
|
};
|
||||||
case GREATERTHAN:
|
case GREATERTHAN:
|
||||||
return fk ? new Predicate<T>() {
|
return fk ? new Predicate<T>() {
|
||||||
|
|
||||||
@@ -1676,7 +1735,8 @@ public class FilterNode {
|
|||||||
value = "%" + value;
|
value = "%" + value;
|
||||||
} else if (express == IGNORECASELIKE || express == IGNORECASENOTLIKE) {
|
} else if (express == IGNORECASELIKE || express == IGNORECASENOTLIKE) {
|
||||||
value = "%" + value.toString().toLowerCase() + '%';
|
value = "%" + value.toString().toLowerCase() + '%';
|
||||||
} else if (express == IGNORECASECONTAIN || express == IGNORECASENOTCONTAIN) {
|
} else if (express == IGNORECASECONTAIN || express == IGNORECASENOTCONTAIN
|
||||||
|
|| express == IGNORECASEEQUAL || express == IGNORECASENOTEQUAL) {
|
||||||
value = value.toString().toLowerCase();
|
value = value.toString().toLowerCase();
|
||||||
}
|
}
|
||||||
return new StringBuilder().append('\'').append(value.toString().replace("'", "\\'")).append('\'');
|
return new StringBuilder().append('\'').append(value.toString().replace("'", "\\'")).append('\'');
|
||||||
|
|||||||
@@ -354,7 +354,8 @@ public final class FilterNodeBean<T extends FilterBean> implements Comparable<Fi
|
|||||||
if (express == ISNULL || express == ISNOTNULL) {
|
if (express == ISNULL || express == ISNOTNULL) {
|
||||||
sb.append(col).append(' ').append(express.value());
|
sb.append(col).append(' ').append(express.value());
|
||||||
} else {
|
} else {
|
||||||
boolean lower = (express == IGNORECASELIKE || express == IGNORECASENOTLIKE || express == IGNORECASECONTAIN || express == IGNORECASENOTCONTAIN);
|
boolean lower = (express == IGNORECASEEQUAL || express == IGNORECASENOTEQUAL || express == IGNORECASELIKE
|
||||||
|
|| express == IGNORECASENOTLIKE || express == IGNORECASECONTAIN || express == IGNORECASENOTCONTAIN);
|
||||||
sb.append(lower ? ("LOWER(" + col + ')') : col).append(' ').append(express.value()).append(" ?");
|
sb.append(lower ? ("LOWER(" + col + ')') : col).append(' ').append(express.value()).append(" ?");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user