diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumn.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumn.java index 0cf4cfe2..1477f20b 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumn.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumn.java @@ -139,7 +139,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional QueryCondition eq(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.EQUALS, value).when(isEffective.test(value)); @@ -171,7 +171,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional QueryCondition ne(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.NOT_EQUALS, value).when(isEffective.test(value)); @@ -203,7 +203,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional QueryCondition gt(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.GT, value).when(isEffective.test(value)); @@ -235,7 +235,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional QueryCondition ge(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.GE, value).when(isEffective.test(value)); @@ -267,7 +267,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional QueryCondition lt(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.LT, value).when(isEffective.test(value)); @@ -299,7 +299,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional QueryCondition le(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.LE, value).when(isEffective.test(value)); @@ -331,44 +331,68 @@ public class QueryColumn implements CloneSupport, Conditional QueryCondition in(T[] value, Predicate isEffective) { - if (value == null || value.length == 0 || (value.length == 1 && value[0] == null) || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value) || value.length == 0) { return QueryCondition.createEmpty(); } - if (value.length == 1 && QueryColumnBehavior.isSmartConvertInToEquals()) { - return QueryCondition.create(this, SqlOperator.EQUALS, value[0]).when(isEffective.test(value)); + // IN 里面只有一个值的情况 + if (value.length == 1) { + if (QueryColumnBehavior.shouldIgnoreValue(value[0])) { + return QueryCondition.createEmpty(); + } + if (QueryColumnBehavior.isSmartConvertInToEquals()) { + return QueryCondition.create(this, SqlOperator.EQUALS, value[0]).when(isEffective.test(value)); + } } return QueryCondition.create(this, SqlConsts.IN, value).when(isEffective.test(value)); } @@ -431,44 +455,68 @@ public class QueryColumn implements CloneSupport, Conditional QueryCondition notIn(T[] value, Predicate isEffective) { - if (value == null || value.length == 0 || (value.length == 1 && value[0] == null) || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value) || value.length == 0) { return QueryCondition.createEmpty(); } - if (value.length == 1 && QueryColumnBehavior.isSmartConvertInToEquals()) { - return QueryCondition.create(this, SqlOperator.NOT_EQUALS, value[0]).when(isEffective.test(value)); + // NOT IN 里面只有一个值的情况 + if (value.length == 1) { + if (QueryColumnBehavior.shouldIgnoreValue(value[0])) { + return QueryCondition.createEmpty(); + } + if (QueryColumnBehavior.isSmartConvertInToEquals()) { + return QueryCondition.create(this, SqlOperator.NOT_EQUALS, value[0]).when(isEffective.test(value)); + } } return QueryCondition.create(this, SqlConsts.NOT_IN, value).when(isEffective.test(value)); } @@ -571,7 +619,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional QueryCondition like(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.LIKE, "%" + value + "%").when(isEffective.test(value)); @@ -603,7 +651,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional QueryCondition likeLeft(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.LIKE, value + "%").when(isEffective.test(value)); @@ -635,7 +683,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional QueryCondition likeRight(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.LIKE, "%" + value).when(isEffective.test(value)); @@ -676,7 +724,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional, Conditional QueryCondition notLike(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.NOT_LIKE, "%" + value + "%").when(isEffective.test(value)); @@ -730,7 +778,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional QueryCondition notLikeLeft(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.NOT_LIKE, value + "%").when(isEffective.test(value)); @@ -762,7 +810,7 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional, Conditional, Conditional QueryCondition notLikeRight(T value, Predicate isEffective) { - if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) { + if (QueryColumnBehavior.shouldIgnoreValue(value)) { return QueryCondition.createEmpty(); } return QueryCondition.create(this, SqlOperator.NOT_LIKE, "%" + value).when(isEffective.test(value)); @@ -803,7 +851,7 @@ public class QueryColumn implements CloneSupport, Conditional