diff --git a/core/src/main/java/tk/mybatis/mapper/util/OGNL.java b/core/src/main/java/tk/mybatis/mapper/util/OGNL.java index 6100f98a843b20710a5f01af18d3d97b38c21ced..d4ed9df1d852ec2103524dc08a1b0ce181366916 100644 --- a/core/src/main/java/tk/mybatis/mapper/util/OGNL.java +++ b/core/src/main/java/tk/mybatis/mapper/util/OGNL.java @@ -114,8 +114,7 @@ public abstract class OGNL { if (parameter != null) { try { if (parameter instanceof Example) { - List criteriaList = ((Example) parameter).getOredCriteria(); - if (criteriaList != null && criteriaList.size() > 0) { + if (hasValidCriteria((Example) parameter)) { return true; } } else { @@ -250,4 +249,21 @@ public abstract class OGNL { return result; } + /** + * 检查example是否至少有一个valid的Criteria + * @param example + * @return + */ + private static boolean hasValidCriteria(Example example) { + if (example == null || example.getOredCriteria() == null) { + return false; + } + for (Example.Criteria oredCriteria : example.getOredCriteria()) { + if (oredCriteria.isValid()) { + return true; + } + } + return false; + } + }