diff --git a/src/main/java/org/redkale/source/FilterJoinNode.java b/src/main/java/org/redkale/source/FilterJoinNode.java index 364dd52c0..31727354b 100644 --- a/src/main/java/org/redkale/source/FilterJoinNode.java +++ b/src/main/java/org/redkale/source/FilterJoinNode.java @@ -46,7 +46,7 @@ public class FilterJoinNode extends FilterNode { this.joinClass = joinClass; this.joinColumns = joinColumns; this.column = column; - this.express = express == null ? EQ : express; + this.express = express == null ? EQ : FilterNodes.oldExpress(express); this.value = value; } @@ -57,20 +57,24 @@ public class FilterJoinNode extends FilterNode { this.nodes = node.nodes; } + @Deprecated(since = "2.8.0") public static FilterJoinNode create(Class joinClass, String joinColumn, String column, Serializable value) { - return create(joinClass, new String[]{joinColumn}, column, value); + return FilterNodes.joinInner(joinClass, new String[]{joinColumn}, column, value); } + @Deprecated(since = "2.8.0") public static FilterJoinNode create(Class joinClass, String joinColumn, String column, FilterExpress express, Serializable value) { - return create(joinClass, new String[]{joinColumn}, column, express, value); + return FilterNodes.joinInner(joinClass, new String[]{joinColumn}, column, express, value); } + @Deprecated(since = "2.8.0") public static FilterJoinNode create(Class joinClass, String[] joinColumns, String column, Serializable value) { - return create(joinClass, joinColumns, column, null, value); + return FilterNodes.joinInner(joinClass, joinColumns, column, null, value); } + @Deprecated(since = "2.8.0") public static FilterJoinNode create(Class joinClass, String[] joinColumns, String column, FilterExpress express, Serializable value) { - return new FilterJoinNode(joinClass, joinColumns, column, express, value); + return FilterNodes.joinInner(joinClass, joinColumns, column, express, value); } @Override @@ -86,22 +90,22 @@ public class FilterJoinNode extends FilterNode { } @Override - protected FilterNode any(final FilterNode node0, boolean signor) { + protected FilterNode any(final FilterNode node0, boolean isOr) { Objects.requireNonNull(node0); if (!(node0 instanceof FilterJoinNode)) { - throw new IllegalArgumentException(this + (signor ? " or " : " and ") + " a node but " + throw new IllegalArgumentException(this + (isOr ? " or " : " and ") + " a node but " + String.valueOf(node0) + " is not a " + FilterJoinNode.class.getSimpleName()); } final FilterJoinNode node = (FilterJoinNode) node0; if (this.nodes == null) { this.nodes = new FilterNode[]{node}; - this.or = signor; + this.or = isOr; return this; } - if (or == signor || this.column == null) { + if (or == isOr || this.column == null) { this.nodes = Utility.append(this.nodes, node); if (this.column == null) { - this.or = signor; + this.or = isOr; } return this; } @@ -112,7 +116,7 @@ public class FilterJoinNode extends FilterNode { this.joinClass = null; this.joinEntity = null; this.joinColumns = null; - this.or = signor; + this.or = isOr; return this; } diff --git a/src/main/java/org/redkale/source/FilterNodeBean.java b/src/main/java/org/redkale/source/FilterNodeBean.java index 24538fd46..9218dfb9b 100644 --- a/src/main/java/org/redkale/source/FilterNodeBean.java +++ b/src/main/java/org/redkale/source/FilterNodeBean.java @@ -180,7 +180,7 @@ public final class FilterNodeBean implements Comparable FilterNode fvdiv(LambdaFunction func, F value) { return new FilterNode(LambdaFunction.readColumn(func), FV_DIV, value); } + + //---------------------------------------------------------------------------------------------------- + public static FilterJoinNode joinInner(Class joinClass, String joinColumn, String column, Serializable value) { + return joinInner(joinClass, new String[]{joinColumn}, column, value); + } + public static FilterJoinNode joinInner(Class joinClass, String joinColumn, String column, FilterExpress express, Serializable value) { + return joinInner(joinClass, new String[]{joinColumn}, column, express, value); + } + + public static FilterJoinNode joinInner(Class joinClass, String[] joinColumns, String column, Serializable value) { + return joinInner(joinClass, joinColumns, column, null, value); + } + + public static FilterJoinNode joinInner(Class joinClass, String[] joinColumns, String column, FilterExpress express, Serializable value) { + return new FilterJoinNode(joinClass, joinColumns, column, express, value); + } + + //---------------------------------------------------------------------------------------------------- static FilterExpress oldExpress(FilterExpress express) { switch (express) { case EQUAL: diff --git a/src/test/java/org/redkale/test/source/FilterNodeTest.java b/src/test/java/org/redkale/test/source/FilterNodeTest.java index ed7785b40..3818f931f 100644 --- a/src/test/java/org/redkale/test/source/FilterNodeTest.java +++ b/src/test/java/org/redkale/test/source/FilterNodeTest.java @@ -100,9 +100,9 @@ public class FilterNodeTest { @Test public void run() throws Exception { final CarTestBean bean = CarTestBean.create(); - FilterNode joinNode1 = FilterJoinNode.create(UserTestTable.class, new String[]{"userid", "username"}, "username", LIKE, bean.username) - .or(FilterJoinNode.create(UserTestTable.class, new String[]{"userid", "username"}, "createtime", GT, bean.createtime)); - FilterNode joinNode2 = FilterJoinNode.create(CarTypeTestTable.class, "cartype", "typename", LIKE, bean.typename); + FilterNode joinNode1 = FilterNodes.joinInner(UserTestTable.class, new String[]{"userid", "username"}, "username", LIKE, bean.username) + .or(FilterNodes.joinInner(UserTestTable.class, new String[]{"userid", "username"}, "createtime", GT, bean.createtime)); + FilterNode joinNode2 = FilterNodes.joinInner(CarTypeTestTable.class, "cartype", "typename", LIKE, bean.typename); final FilterNode node = CarTestBean.caridTransient() ? (joinNode2.or(joinNode1)) : FilterNodes.gt("carid", bean.carid).and(joinNode1).or(joinNode2); final FilterNode beanNode = FilterNodeBean.createFilterNode(bean); System.out.println("node.string = " + node);