分页功能的实现
一、RuoYi中分页功能的实现
1.前端代码
1.1分页组件pagination
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
1.2分页组件对应参数queryParams
queryParams: {
pageNum: 1,
pageSize: 10,
ipaddr: undefined,
userName: undefined,
status: undefined
}
1.3分页组件点击事件getList
getList() {
this.loading = true;
list(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.list = response.rows;
this.total = response.total;
this.loading = false;
}
);
}
1.4分页点击事件调用的函数list
export function list(query) {
return request({
url: '/monitor/logininfor/list',
method: 'get',
params: query
})
}
2前端F12开发者工具显示
2.1前端发送请求信息
2.2前端接受请求信息
3.后端代码
3.1后端Controller层代码
startPage请求对应的两个参数PageNum,PageSize
@PreAuthorize("@ss.hasPermi('monitor:logininfor:list')")
@GetMapping("/list")
public TableDataInfo list(SysLogininfor logininfor)
{
startPage();
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
return getDataTable(list);
}
3.2后端startPage对应代码
通过startPage请求对应的两个参数PageNum,PageSize
public static void startPage()
{
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize))
{
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
Boolean reasonable = pageDomain.getReasonable();
PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
}
}
3.3后端selectLogininforList的xml对应代码
<select id="selectLogininforList" parameterType="SysLogininfor" resultMap="SysLogininforResult">
select info_id, user_name, ipaddr, login_location, browser, os, status, msg, login_time from sys_logininfor
<where>
<if test="ipaddr != null and ipaddr != ''">
AND ipaddr like concat('%', #{ipaddr}, '%')
</if>
<if test="status != null and status != ''">
AND status = #{status}
</if>
<if test="userName != null and userName != ''">
AND user_name like concat('%', #{userName}, '%')
</if>
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
and date_format(login_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
</if>
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
and date_format(login_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
</if>
</where>
order by info_id desc
</select>
4.后端Log
二、前端参数为pageNum=2&pageSize=10 请求对应的后端Log
LIMIT 有两种形式:
LIMIT num:数据的前num 个
LIMIT offset,num:从offset 偏移位置开始的num 个数据
13:01:15.689 [http-nio-8080-exec-30] DEBUG c.r.s.m.S.selectLogininforList_COUNT - [debug,137] - ==> Preparing: SELECT count(0) FROM sys_logininfor
13:01:15.690 [http-nio-8080-exec-30] DEBUG c.r.s.m.S.selectLogininforList_COUNT - [debug,137] - ==> Parameters:
13:01:15.692 [http-nio-8080-exec-30] DEBUG c.r.s.m.S.selectLogininforList_COUNT - [debug,137] - <== Total: 1
13:01:15.693 [http-nio-8080-exec-30] DEBUG c.r.s.m.S.selectLogininforList - [debug,137] - ==> Preparing: select info_id, user_name, ipaddr, login_location, browser, os, status, msg, login_time from sys_logininfor order by info_id desc LIMIT ?, ?
13:01:15.694 [http-nio-8080-exec-30] DEBUG c.r.s.m.S.selectLogininforList - [debug,137] - ==> Parameters: 10(Long), 10(Integer)
13:01:15.698 [http-nio-8080-exec-30] DEBUG c.r.s.m.S.selectLogininforList - [debug,137] - <== Total: 10