调用服务返回分页数据

通过调用服务获取数据,可以获取其它应用的数据。对于数据量大的数据,建议采用分页获取数据。

后端服务增加2个参数 page 和 size 用于获取分页数据,前端页面使用 serviceData 服务数据组件,调用后端服务,服务返回的数据自动装入 serviceData 组件。

定义服务返回分页数据

在“服务”设计区中,添加服务请求,在"请求参数"中添加 page 和 size 参数,"数据类型"都是整数,如下图所示

图 1

在“请求返回”中选中“集合”和”分页“、“数据类型”选择动态数据集或静态数据集,如下图所示

图 2

如果返回的是其它应用的数据,在本应用中添加静态数据集(静态数据集编译后生成 vo),请求返回选择这个静态数据集

添加数据方法或自定义 Mapper

在“服务”设计区,点击“数据方法维护”按钮,如下图所示,给数据集添加数据方法,即生成 Mapper

在这里添加、修改和删除数据方法

图 3

选中“全部字段”和“结果分页”,则返回 Page 对象

图 4

保存后,系统生成 gen-java/main/mapper/xxxMapper.java。这里生成的是只查询一个数据集的方法,如果需要查询多个数据集,在 java/main 目录下创建 mapper 目录,在 mapper 目录下创建 Mapper.java,写 SQL 查询多个数据集

图 5

在 Service 中调用 Mapper 方法

在服务请求对应的 Java 方法中调用 Mapper 中定义的方法,这里需要使用分页工具类 com.justep.cloud.data.PageUtil 提供的两个方法,

  • 转 mybatis 分页请求 toMybatisPageRequest:用于将分页请求转换为 mybatis 分页对象,方法定义如下
方法名
    public static Page toMybatisPageRequest(PageRequest input)
参数
    input:分页请求 com.justep.cloud.data.PageRequest,使用 page 和 size 两个参数创建,
          例如:PageRequest input = new PageRequest(page, size);
返回值
    mybatis 分页对象 com.baomidou.mybatisplus.extension.plugins.pagination.Page
  • 转换 mybatis 分页结果:将 mybatis 分页对象,转换为系统的 Page 对象,作为服务的返回结果
方法名
    public static <T> com.justep.cloud.data.Page<T> fromMybatisPage(Page<T> input)
参数
    mybatis 分页对象 com.baomidou.mybatisplus.extension.plugins.pagination.Page
返回值
    系统的 page 对象 com.justep.cloud.data.Page

获取分页数据过程如下

  • controller 用传入的 page 和 size 参数创建 PageRequest 对象
  • 调用 Mapper 方法获得 Page 对象,参数使用“转 mybatis 分页请求”方法,传入 PageRequest 获得
  • 调用“转换 mybatis 分页结果”,获得系统 Page 对象

获取分页数据过程的代码如下

步骤 代码
服务分页请求 public ResponseEntity> getPage(int page, int size )
创建分页请求对象 PageRequest pageRequest = new PageRequest(page, size);
分页请求对象转换为 mybatis 分页对象 Page mybatisPage = PageUtil.toMybatisPageRequest(pageRequest);
执行 mapper 方法 ,返回 mybatis 分页对象 Page<Orderm> pageData = ordermMapper.queryPagedEntityByFidIsNotNull(mybatisPage);
转换为系统分页对象 PageUtil.fromMybatisPage(pageData)
返回系统分页对象 return page;

需要引用 Java 类如下

com.justep.cloud.data.Page
com.justep.cloud.data.PageUtil
com.justep.cloud.data.PageRequest
com.baomidou.mybatisplus.extension.plugins.pagination.Page

service 实现类的示例代码如下

public Page<Orderm> getPage(com.justep.cloud.data.PageRequest pageRequest) throws Exception {
   com.baomidou.mybatisplus.extension.plugins.pagination.Page<Orderm> pageData = ordermMapper.queryPagedEntityByFidIsNotNull(PageUtil.toMybatisPageRequest(pageRequest));
   Page page = PageUtil.fromMybatisPage(pageData);
   return page;
}

使用画代码也可实现,如下图所示

图 6

其中使用分页工具类,如下图所示

使用 serviceData 获取分页数据

切换到“页面”设计区,将服务组件添加到页面上,点击“增加结果数据集”,添加 serviceData 组件,如下图所示

图 7

在数据集上可以设置分页数据大小

图 8

在页面上添加数据显示组件(例如表格),“绑定数据集”属性选择 serviceData 组件

添加“分页”组件,“绑定数据集”属性选择 serviceData 组件

通过点击分页栏显示指定页的数据,运行效果如下图所示

  • 显示第一页数据,page 传的是1,size 传的是 serviceData 设置的分页数据大小

图 9

  • 显示第二页数据,page 传的是2

图 10

特别说明:serviceData 使用说明

  • 使用 serviceData 时,不需要发送服务请求,而是通过调用 serviceData 的刷新方法 refreshData 获取数据
  • serviceData 是通过调用服务获取数据的,不支持 restData 的过滤方法和过滤组件
  • 本例服务请求 size 参数使用了 serviceData 中设置的分页数据大小,也可以在后端服务请求定义中设置参数默认值

results matching ""

    No results matching ""