调用服务返回分页数据
场景描述
通过调用服务获取数据,可以获取其它应用的数据。对于数据量大的数据,建议采用分页获取数据
实现思路
后端服务增加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的刷新方法