1. 程式人生 > >esper(2)-事件類型-pojo

esper(2)-事件類型-pojo

對象 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
@NoArgsConstructor
class 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