调用服务返回分页数据

场景描述

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

实现思路

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

实现步骤

1. 定义服务返回分页数据

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

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

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

2. 定义Dao

打开本地IDE,在main/src/main/java/main目录下增加dao目录,在dao目录下增加YongpinCustomMapper.java和YongpinCustomMapper.xml两个文件,如下图所示

在java文件中定义查询用品数据的接口方法,方法名必须以queryPagedEntity开头,包括Pageable参数

YongpinCustomMapper.java文件完整代码如下

package main.dao;

import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Page;
import main.common.MybatisRepository;

@MybatisRepository
public interface YongpinCustomMapper {

    public Page<main.model.Yongpin> queryPagedEntityYongpin(@Param("pageRequest")Pageable pageRequest);

}

在xml文件中定义2个select元素, 一个select元素的id和java方法名相同,即queryPagedEntityYongpin,用于查询记录数

另一个select元素的id是java方法名加上_list,即queryPagedEntityYongpin_list,用于查询记录

YongpinCustomMapper.xml文件完整代码如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="main.dao.YongpinCustomMapper" >
    <!-- hasRelation=false -->
    <resultMap id="BaseResultMap" type="main.model.Yongpin">
        <id column="yongpin_fid" property="fid" />
        <result column="yongpin_fmingcheng" property="fmingcheng" />
        <result column="yongpin_ftupian" property="ftupian" />
        <result column="yongpin_fkuguany" property="fkuguany" />
    </resultMap>

    <resultMap id="Yongpin_ResultMap" type="main.model.Yongpin">
        <id column="yongpin_fid" property="fid" />
        <result column="yongpin_fmingcheng" property="fmingcheng" />
        <result column="yongpin_ftupian" property="ftupian" />
        <result column="yongpin_fkuguany" property="fkuguany" />
    </resultMap>

    <resultMap id="Yongpin_Page_ResultMap" type="main.common.MybatisPage">
        <result column="count" property="total" />
    </resultMap>

    <select id="queryPagedEntityYongpin" resultMap="Yongpin_Page_ResultMap">
        SELECT count( yongpin.fid) as count FROM main_yongpin yongpin 
    </select>

    <select id="queryPagedEntityYongpin_list" resultMap="Yongpin_ResultMap">
        select yongpin.fid yongpin_fid,yongpin.fmingcheng yongpin_fmingcheng,yongpin.ftupian yongpin_ftupian,yongpin.fkuguany yongpin_fkuguany 
        from main_yongpin yongpin
    </select>    
</mapper>

3. 在Service中调用Dao的方法

在服务请求对应的java方法中调用Dao中定义的方法,用传入的page和size参数创建Pageable对象。

FuwuUserService.java文件完整代码如下

package main.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;

import main.dao.YongpinCustomMapper;
import main.model.Yongpin;

@Service
public class FuwuUserService {

    @Autowired 
    private YongpinCustomMapper yongpinCustomMapper;

    public Page<Yongpin> yongpinzx(Integer page,Integer size) throws Exception {
        Page<Yongpin> yongpinPage = yongpinCustomMapper.queryPagedEntityYongpin(new com.justep.cloud.repo.PageRequest(page, size));
        return yongpinPage;
    }
}

4. 使用serviceData获取分页数据

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

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

添加列表分页栏组件,“引用数据”属性选择serviceData组件

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

显示第一页数据,page传的是1,size没传,使用请求中设置的参数默认值10

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

serviceData使用说明

  • 使用serviceData时,不需要发送服务请求,而是通过调用serviceData的刷新方法refreshData获取数据
  • serviceData是通过调用服务获取数据的,不支持restData的过滤方法和过滤组件
  • 本例服务请求size参数使用了后端服务请求定义中设置的参数默认值,也可以在前端页面的服务组件中定义。可以直接定义一个数值,也可以将size参数绑定到数据集,通过数据集设置可变的数值。如果size绑定到数据集,则需设置serviceData不自动加载,在页面加载完成事件中,调用serviceData的刷新方法

results matching ""

    No results matching ""

    results matching ""

      No results matching ""