diff --git a/src/com/wentch/redkale/source/FilterColumn.java b/src/com/wentch/redkale/source/FilterColumn.java index 9f4e86cf2..6944a9601 100644 --- a/src/com/wentch/redkale/source/FilterColumn.java +++ b/src/com/wentch/redkale/source/FilterColumn.java @@ -34,10 +34,11 @@ public @interface FilterColumn { long least() default 1; /** - * LIKE、NOT LIKE时是否区分大小写 + * LIKE、NOT LIKE时是否区分大小写, 由IGNORECASELIKE、IGNORECASENOTLIKE代替 *
* @return
*/
+ @Deprecated
boolean ignoreCase() default false;
/**
diff --git a/src/com/wentch/redkale/source/FilterExpress.java b/src/com/wentch/redkale/source/FilterExpress.java
index 33a372a51..2e04189be 100644
--- a/src/com/wentch/redkale/source/FilterExpress.java
+++ b/src/com/wentch/redkale/source/FilterExpress.java
@@ -19,6 +19,8 @@ public enum FilterExpress {
LESSTHANOREQUALTO("<="),
LIKE("LIKE"),
NOTLIKE("NOT LIKE"),
+ IGNORECASELIKE("LIKE"),
+ IGNORECASENOTLIKE("NOT LIKE"),
BETWEEN("BETWEEN"),
NOTBETWEEN("NOT BETWEEN"),
IN("IN"),
diff --git a/src/com/wentch/redkale/source/FilterNode.java b/src/com/wentch/redkale/source/FilterNode.java
index b357213c5..09e250e3a 100644
--- a/src/com/wentch/redkale/source/FilterNode.java
+++ b/src/com/wentch/redkale/source/FilterNode.java
@@ -201,7 +201,12 @@ public class FilterNode {
if (val == null) return null;
StringBuilder sb = new StringBuilder(32);
if (tabalis != null) sb.append(tabalis).append('.');
- sb.append(info.getSQLColumn(column)).append(' ');
+ if (express == IGNORECASELIKE || express == IGNORECASENOTLIKE) {
+ sb.append("LOWER(").append(info.getSQLColumn(column)).append(')');
+ } else {
+ sb.append(info.getSQLColumn(column));
+ }
+ sb.append(' ');
switch (express) {
case OPAND:
case OPOR:
@@ -510,6 +515,21 @@ public class FilterNode {
return attr.field() + ' ' + express.value() + ' ' + val;
}
};
+ case IGNORECASELIKE:
+ final String valstr = val.toString().toLowerCase();
+ return new Predicate