This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
package com.wentch.redkale.source;
|
package com.wentch.redkale.source;
|
||||||
|
|
||||||
import com.wentch.redkale.convert.json.*;
|
import com.wentch.redkale.convert.json.*;
|
||||||
import static com.wentch.redkale.source.FilterExpress.GREATERTHAN;
|
import static com.wentch.redkale.source.FilterExpress.*;
|
||||||
import com.wentch.redkale.util.*;
|
import com.wentch.redkale.util.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.*;
|
import java.util.function.*;
|
||||||
@@ -25,19 +25,57 @@ public class FilterNodeTest {
|
|||||||
final EntityInfo<UserTestTable> userEntity = EntityInfo.load(UserTestTable.class, 0, false, (t) -> UserTestTable.createList());
|
final EntityInfo<UserTestTable> userEntity = EntityInfo.load(UserTestTable.class, 0, false, (t) -> UserTestTable.createList());
|
||||||
final EntityInfo<CarTypeTestTable> typeEntity = EntityInfo.load(CarTypeTestTable.class, 0, false, (t) -> CarTypeTestTable.createList());
|
final EntityInfo<CarTypeTestTable> typeEntity = EntityInfo.load(CarTypeTestTable.class, 0, false, (t) -> CarTypeTestTable.createList());
|
||||||
|
|
||||||
FilterNode joinNode1 = FilterJoinNode.create(UserTestTable.class, new String[]{"userid", "username"}, "username", FilterExpress.LIKE, "用户1")
|
final CarTestBean bean = new CarTestBean();
|
||||||
.or(FilterJoinNode.create(UserTestTable.class, new String[]{"userid", "username"}, "createtime", FilterExpress.GREATERTHAN, 500));
|
bean.carid = 1;
|
||||||
FilterNode joinNode2 = FilterJoinNode.create(CarTypeTestTable.class, "cartype", "typename", FilterExpress.LIKE, "法拉利");
|
bean.username = "用户1";
|
||||||
FilterNode node = FilterNode.create("carid", GREATERTHAN, 1).and(joinNode1).or(joinNode2);
|
bean.createtime = 500;
|
||||||
|
bean.typename = "法拉利";
|
||||||
|
FilterNode joinNode1 = FilterJoinNode.create(UserTestTable.class, new String[]{"userid", "username"}, "username", LIKE, bean.username)
|
||||||
|
.or(FilterJoinNode.create(UserTestTable.class, new String[]{"userid", "username"}, "createtime", GREATERTHAN, bean.createtime));
|
||||||
|
FilterNode joinNode2 = FilterJoinNode.create(CarTypeTestTable.class, "cartype", "typename", LIKE, bean.typename);
|
||||||
|
FilterNode node = FilterNode.create("carid", GREATERTHAN, bean.carid).and(joinNode1).or(joinNode2);
|
||||||
|
FilterNode beanNode = FilterNodeBean.createFilterNode(bean);
|
||||||
|
System.out.println("bean = " + beanNode);
|
||||||
System.out.println("node = " + node);
|
System.out.println("node = " + node);
|
||||||
Map<Class, String> joinTabalis = node.getJoinTabalis();
|
Map<Class, String> joinTabalis = node.getJoinTabalis();
|
||||||
CharSequence joinsql = node.createSQLJoin(func, joinTabalis, carEntity);
|
CharSequence joinsql = node.createSQLJoin(func, joinTabalis, carEntity);
|
||||||
CharSequence where = node.createSQLExpress(carEntity, joinTabalis, null);
|
CharSequence where = node.createSQLExpress(carEntity, joinTabalis);
|
||||||
System.out.println("SELECT a.* FROM " + CarTestTable.class.getSimpleName().toLowerCase() + " a" + (joinsql == null ? "" : joinsql) + " WHERE " + where);
|
System.out.println("SELECT a.* FROM " + CarTestTable.class.getSimpleName().toLowerCase() + " a" + (joinsql == null ? "" : joinsql) + " WHERE " + where);
|
||||||
assert node.isCacheUseable(func) : "isCacheUseable 应该是true";
|
assert node.isCacheUseable(func) : "isCacheUseable 应该是true";
|
||||||
|
assert beanNode.isCacheUseable(func): "isCacheUseable 应该是true";
|
||||||
System.out.println("isCacheUseable = " + node.isCacheUseable(func)); //应该是true
|
System.out.println("isCacheUseable = " + node.isCacheUseable(func)); //应该是true
|
||||||
System.out.println(node.createPredicate(carEntity.getCache(), null));
|
System.out.println(node.createPredicate(carEntity.getCache()));
|
||||||
|
System.out.println(beanNode.createPredicate(carEntity.getCache()));
|
||||||
System.out.println(carEntity.getCache().querySheet(null, new Flipper(), node));
|
System.out.println(carEntity.getCache().querySheet(null, new Flipper(), node));
|
||||||
|
System.out.println(carEntity.getCache().querySheet(null, new Flipper(), beanNode));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class CarTestBean implements FilterBean {
|
||||||
|
|
||||||
|
@FilterGroup("[OR].[AND]a")
|
||||||
|
@FilterColumn(express = GREATERTHAN)
|
||||||
|
//@Transient
|
||||||
|
public long carid;
|
||||||
|
|
||||||
|
@FilterGroup("[OR].[AND]a.[OR]c")
|
||||||
|
@FilterColumn(express = LIKE)
|
||||||
|
@FilterJoinColumn(table = UserTestTable.class, columns = {"userid", "username"})
|
||||||
|
public String username;
|
||||||
|
|
||||||
|
@FilterGroup("[OR].[AND]a.[OR]c")
|
||||||
|
@FilterColumn(express = GREATERTHAN)
|
||||||
|
@FilterJoinColumn(table = UserTestTable.class, columns = {"userid", "username"})
|
||||||
|
public long createtime;
|
||||||
|
|
||||||
|
@FilterGroup("[OR]")
|
||||||
|
@FilterColumn(express = LIKE)
|
||||||
|
@FilterJoinColumn(table = CarTypeTestTable.class, columns = {"cartype"})
|
||||||
|
public String typename;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return JsonFactory.root().getConvert().convertTo(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@AutoLoad
|
@AutoLoad
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public class TestSourceCache {
|
|||||||
System.out.println("node = " + node);
|
System.out.println("node = " + node);
|
||||||
Sheet<TestEntity> sheet = info.getCache().querySheet(null, flipper, node);
|
Sheet<TestEntity> sheet = info.getCache().querySheet(null, flipper, node);
|
||||||
System.out.println(sheet);
|
System.out.println(sheet);
|
||||||
System.out.println(info.getCache().querySheet(null, flipper, null, new TestEntityBean(1000, "用户")));
|
System.out.println(info.getCache().querySheet(null, flipper, FilterNodeBean.createFilterNode(new TestEntityBean(1000, "用户"))));
|
||||||
final CountDownLatch cdl = new CountDownLatch(100);
|
final CountDownLatch cdl = new CountDownLatch(100);
|
||||||
s = System.currentTimeMillis();
|
s = System.currentTimeMillis();
|
||||||
for (int i = 0; i < 100; i++) {
|
for (int i = 0; i < 100; i++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user