This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
package com.wentch.redkale.source;
|
||||
|
||||
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 java.util.*;
|
||||
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<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")
|
||||
.or(FilterJoinNode.create(UserTestTable.class, new String[]{"userid", "username"}, "createtime", FilterExpress.GREATERTHAN, 500));
|
||||
FilterNode joinNode2 = FilterJoinNode.create(CarTypeTestTable.class, "cartype", "typename", FilterExpress.LIKE, "法拉利");
|
||||
FilterNode node = FilterNode.create("carid", GREATERTHAN, 1).and(joinNode1).or(joinNode2);
|
||||
final CarTestBean bean = new CarTestBean();
|
||||
bean.carid = 1;
|
||||
bean.username = "用户1";
|
||||
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);
|
||||
Map<Class, String> joinTabalis = node.getJoinTabalis();
|
||||
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);
|
||||
assert node.isCacheUseable(func) : "isCacheUseable 应该是true";
|
||||
assert beanNode.isCacheUseable(func): "isCacheUseable 应该是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(), 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
|
||||
|
||||
@@ -55,7 +55,7 @@ public class TestSourceCache {
|
||||
System.out.println("node = " + node);
|
||||
Sheet<TestEntity> sheet = info.getCache().querySheet(null, flipper, node);
|
||||
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);
|
||||
s = System.currentTimeMillis();
|
||||
for (int i = 0; i < 100; i++) {
|
||||
|
||||
Reference in New Issue
Block a user