vaadin_Vaadin提示:延迟加载和商品标识

vaadin

vaadin

延迟加载

Vaadin中使用网格,树或任何其他多值组件时,您通常希望显示数据库表中的数据,并且通常数据库中有多行。 在这种情况下,加载数千甚至数百万条记录是没有意义的,这将是一个巨大的性能问题。 对于此用例,Vaadin使用CallbackDataProvider提供延迟加载。

要创建CallBackDataProvider ,必须实现CountCallbackFetchCallbackCountCallback用于提供记录总数。 FetchCallback用于分页。 这两种方法都将接收一个包含过滤器,排序,偏移量和限制的Query对象。

在此示例中,您可以看到如何使用偏移量和限制。

 DataProvider<Employee, Void> dataProvider = new CallbackDataProvider<>(

                query -> employeeRepository.findAll(query.getOffset(), query.getLimit()),

                query -> employeeRepository.count()

        );

物品识别

GridDataProvider有正在使用的项目的方法:

 grid.select(employee);
 dataProvider.refreshItem(employee);

有没有想过Vaadin如何在底层数据结构中找到合适的项目? 毫不奇怪-它使用equals() 。 但是,如果您无法控制equals()的实现方式,该怎么办? 例如,如果您在网格中使用的类是像jOOQ这样直接从数据库表中生成的呢?

别担心! Vaadin提供了另一个构造函数来创建CallbackDataProvivder

作为第三个参数,您传递一个ValueProvider ,该ValueProvider负责返回唯一标识符。 在示例中,这是员工的ID。

 DataProvider<Employee, Void> dataProvider = new CallbackDataProvider<>(

                query -> employeeRepository.findAll(query.getOffset(), query.getLimit()),

                query -> employeeRepository.count(),

                Employee::getId

        );

下一步是什么?

从未听说过Vaadin吗? 敬请期待即将推出的Vaadin简介!

翻译自: https://www.javacodegeeks.com/2020/06/vaadin-tip-lazy-loading-and-item-identity.html

vaadin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值