esper(2)-事件類型-pojo
阿新 • • 發佈:2019-03-22
對象 dmi provide print {} state col 指定元素 override
一、
1、Person.java
import lombok.*; import java.util.List; import java.util.Map; @Setter @Getter @ToString public class Person { String name; int age; List<Child> children; Map<String,Integer> phones; Address address; } @Setter @Getter @ToString @AllArgsConstructor @NoArgsConstructorclass Child { String name; int gender; } @Setter @Getter @ToString @AllArgsConstructor @NoArgsConstructor class Address { String road; String street; int houseNo; }
2、PojoTest.java
import cn.hutool.core.collection.CollUtil; import com.espertech.esper.client.*;import org.junit.Test; import java.util.List; /** * @author yaoyuan2 * @date 2019/3/21 */ public class PojoTest { static EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); static EPAdministrator admin = epService.getEPAdministrator(); public EPRuntime getRuntime(String epl) { EPStatement state= admin.createEPL(epl); state.addListener(new UpdateListener() { @Override public void update(EventBean[] newEvents, EventBean[] oldEvents) { if (newEvents != null) { Address address = (Address)newEvents[0].get("address"); List<Child> children = (List<Child>)newEvents[0].get("children"); Integer age = (Integer)newEvents[0].get("age"); System.out.println("address =" + address.getRoad()); System.out.println("children =" + children); System.out.println("age =" + age); } } }); EPRuntime runtime = epService.getEPRuntime(); return runtime; } @Test public void test1() { String epl = "select age,children,address from com.ebc.eventtype.pojo.Person where name=\"yaoyuan\""; EPRuntime runtime = getRuntime(epl); Person p1 = new Person(); p1.setName("yaoyuan"); p1.setAge(20); p1.setChildren(CollUtil.newArrayList(new Child("c1", 1), new Child("c2", 2))); p1.setAddress(new Address("解放道", "食品大街", 30)); runtime.sendEvent(p1); Person p2 = new Person(); p2.setName("yaoyuan2"); p2.setAge(21); p2.setChildren(CollUtil.newArrayList(new Child("c1", 1), new Child("c2", 2))); p2.setAddress(new Address("燕順路", "開發區大街", 31)); runtime.sendEvent(p2); } }
輸出
address =解放道 children =[Child(name=c1, gender=1), Child(name=c2, gender=2)] age =20
二、獲取List指定元素、map指定元素、對象的某個屬性值
1、
public class Person { public Child getChildren(int index) { return children.get(index); } public int getPhones(String name) { return phones.get(name); } }
2、
String epl = "select children[1],phones(‘home‘),address.road from com.ebc.eventtype.pojo.pojo2.Person where name=\"yaoyuan\"";
public void update(EventBean[] newEvents, EventBean[] oldEvents) { if (newEvents != null) { Child child = (Child)newEvents[0].get("children[1]"); Integer phone = (Integer)newEvents[0].get("phones(‘home‘)"); String road = (String)newEvents[0].get("address.road"); Console.log("child={},phone={},road={}",child,phone,road); } }
輸出:
child=Child(name=c2, gender=2),phone=186000,road=解放道
esper(2)-事件類型-pojo