前言
上一篇文章中学习了Calcite基本概念,其中框架的核心能力是通过统一的Sql访问不同来源的数据。这篇文章中将通过一个简单的例子学习如何实现改功能。 最终通过sql来访问Java List中的数据。
准备工作
maven依赖
<dependency>
<groupId>org.apache.calcite</groupId>
<artifactId>calcite-core</artifactId>
<version>1.36.0</version>
</dependency>
数据源定义
PersonList维护了一个Person对象列表,我们将通过sql访问PersonList中的数据
public class PersonList {
private List<Person> personList;
private PersonList(List<Person> personList) {
this.personList = personList;
}
public static PersonList create() {
return new PersonList(Lists.newArrayList());
}
public void addPerson(Person person) {
personList.add(person);
}
public Iterator<Person> getIterator() {
return personList.iterator();
}
}
public class Person {
private Long id;
private String name;
private Integer age;
public static Person createRandomly() {
Person person = new Person();
person.setId((long) ((int) ((Math.random() * 1000000000)