当前位置: 首页 > news >正文

郑州网站建设学习企业服务器配置方案

郑州网站建设学习,企业服务器配置方案,网站开发新技术探索,制作一个网站一般先要明确Lin4j简介 Linq4j是Apache Calcite项目中的一个模块,它提供了类似于LINQ(Language-Integrated Query)的功能,用于在Java中进行数据查询和操作。Linq4j可以将逻辑查询转换为物理查询,支持对集合进行筛选、映射、分组等…

Lin4j简介

Linq4j是Apache Calcite项目中的一个模块,它提供了类似于LINQ(Language-Integrated Query)的功能,用于在Java中进行数据查询和操作。Linq4j可以将逻辑查询转换为物理查询,支持对集合进行筛选、映射、分组等操作。
例如,通过Linq4j可以将类似于以下的逻辑查询语句转换为最终的在java集合上的查询操作:

Enumerable<Employee> employees = ...; 
Enumerable<String> names = employees.where(emp -> emp.getSalary() > 50000).select(emp -> emp.getName());

依赖

<dependency><groupId>org.apache.calcite</groupId><artifactId>calcite-linq4j</artifactId><version>1.36.0</version>
</dependency>

Linq4j核心类与接口

  • Linq4j:org.apache.calcite.linq4j.Linq4j,一个实用工具类,可将 java.util.Collection、java.lang.Iterable、java.util.List等集合对象转换为 org.apache.calcite.linq4j.Enumerable
  • Enumerable:接口的职责是定义了对集合进行查询和操作的方法,包括筛选、映射、分组等功能。接口继承了下列三个接口,支持集合的迭代、投影、过滤等操作
    • RawEnumerable (org.apache.calcite.linq4j):返回org.apache.calcite.linq4j.Enumerator,可对Enumerator实现进行迭代
    • Iterable (java.lang):返回java.lang.Iterable,可对Iterable的实现迭代
    • ExtendedEnumerable (org.apache.calcite.linq4j):定义了在集合对象上的操作 例如 select 投影、where 过滤、groupBy 分组 、hashJoin 连接
      因此通过Linq4j转换方法将输入集合转换为Enumerable,这样就可在原始数据上进行操作。

使用案例

使用过滤、投影、分组

  • 投影没有进行映射变换,按原值输出
  • 过滤筛选出大于3的数
  • 最后进行分组,分组后返回的是一个 Grouping 对象,使用sum函数对分组求和,最终输出求和后的结果
    整个操作使用分组后返回的是Grouping对象,因此后续操作基于此对象进行
        List<Integer> idList = Lists.newArrayList(1,2,3,4,5,6);Enumerable<Integer> itEnumerable = Linq4j.asEnumerable(idList);Enumerable<Grouping<Boolean, Integer>> result =itEnumerable.select((a) -> a).where((a) -> a > 3).groupBy(a -> a%2 == 0);for (Grouping<Boolean, Integer> item: result) {int sum = item.sum(new IntegerFunction1<Integer>() {@Overridepublic int apply(Integer v0) {return v0;}});System.out.println(item.getKey() + " : " + sum);}

通过一个案例,可类推其它方法的使用。

Linq4j在Calcite中的应用

在使用Calcite实现适配多来源数据查询时,需要实现自定义的table,通常需要借助Linq4j提供的方法将集合转换为Enumerable实例,转换过程中依赖asEnumerable方法创建Enumerable实例实例,接着通过select进行对象类型转换。

public class TableForList extends AbstractTable implements ScannableTable{private PersonList personList;public TableForList(PersonList personList) {this.personList = personList;}@Overridepublic Enumerable<Object[]> scan(DataContext root) {return Linq4j.asEnumerable(personList.getPersonList()).select(emp -> new Object[]{emp.getId(), emp.getName(), emp.getAge()});}
http://www.yayakq.cn/news/934692/

相关文章:

  • 遵义制作网站中国网湖北官网
  • 中煤浙江基础建设有限公司网站深圳分销网站设计制作
  • 首都农村医学人才培养体系建设与农村医学人才培养的研究与实践 网站化妆品网站静态模板
  • 网站制作公司电话营销方案英文
  • 网站开发无锡网站开发建设与维护做什么的
  • 国外空间怎么上传网站怎么做图片网站
  • 西安网站手机网站建设建筑设计软件哪个好用
  • 制作网站找哪家好photoshop 做网站
  • 电脑版和手机版网站怎么做的重庆网站建设选夹夹虫
  • 常州网站建设联系电话建筑工程项目管理软件
  • 做网站犯法国内10大猎头公司排名
  • 罗湖商城网站建设哪家效益快躺平设计家官网
  • 网站建设详细的步骤有哪些亚马逊跨境电商开店流程
  • 网站建设前期开发360导航建设网站怎么建
  • 科技加盟网站建设免费网站怎么盈利模式
  • 网站怎么做第三方登录做受视频播放网站
  • 高质量网站外链建设大揭秘吐鲁番市建设局网站
  • 重庆平台网站建设设计qq腾讯官网登录入口
  • 深圳竞价网站怀柔网站建设推广
  • 专业网站制作网络公司易捷商城小程序
  • 门户类网站建设需要多少钱宁夏网站建设推广
  • 视频网站做游戏分发店铺设计思路怎么写
  • 太原网站建设总部在哪英德市城乡建设局网站
  • 公司建设电子商务网站的目的建设银行网上银行官方网站
  • 付网站建设费用会计分录wordpress sql 导入
  • 太原网站建设质量推荐上海微信网站建设公司
  • 开个网站平台要多少钱装饰公司网站开发
  • 总代理大型网站建设友情链接seo
  • 泰安专业网站建设重庆网站建设qq群
  • 北京装饰公司设计乐天seo培训中心