java分页插件使用_Mybatis分页插件使用方法详解

本文实例为大家分享了Mybatis分页插件使用的具体代码,供大家参考,具体内容如下

1.分页插件简介

都说这是史上最好用的分页插件,支持多种数据库以多种方式分页。

2.分页插件的使用

2.1导入maven依赖

com.github.pagehelper

pagehelper

最新版本

2.2 添加配置

1.在mybatis的config配置文件中添加拦截器

2.或者在spring配置中添加

params=value1

这两种方式不能同时用

3.在代码中的使用

3.1设置一个基础的请求类

public class BaseRequest implements Serializable {

private static final long serialVersionUID = 1193444819529643410L;

private Integer pageNum;//页数

private Integer pageSize;//每页行数

private Boolean count;//是否查询总条数

public Integer getPageNum() {

return pageNum;

}

public void setPageNum(Integer pageNum) {

this.pageNum = pageNum;

}

public Integer getPageSize() {

return pageSize;

}

public void setPageSize(Integer pageSize) {

this.pageSize = pageSize;

}

public Boolean getCount() {

return count;

}

public void setCount(Boolean count) {

this.count = count;

}

@Override

public String toString() {

return "BaseRequest{" +

"pageNum=" + pageNum +

", pageSize=" + pageSize +

'}';

}

}

3.2 设置一个基础的PageService 接口

让每个service 去实现这个接口来设置分页的初始值

public interface PageService {

default void setDefaultPageInfo(BaseRequest baseRequest) {

if (null != baseRequest) {

baseRequest.setPageNum(null == baseRequest.getPageNum() ? Constants.PAGE_NUM : baseRequest.getPageNum());

baseRequest

.setPageSize(null == baseRequest.getPageSize() ? Constants.PAGE_SIZE : baseRequest.getPageSize());

baseRequest.setCount(null == baseRequest.getCount() ? Boolean.TRUE : baseRequest.getCount());

} else {

baseRequest = new BaseRequest();

baseRequest.setPageNum(Constants.PAGE_NUM);

baseRequest.setPageSize(Constants.PAGE_SIZE);

baseRequest.setCount(Boolean.TRUE);

}

PageHelper.startPage(baseRequest.getPageNum(), baseRequest.getPageSize(),baseRequest.getCount());

}

}

3.3 如果做了数据转换这用来复制属性值(可选)

数据模型entity 只对应数据库表中的字段, 出参与入参 都是数据传输对象 dto , 从数据库中查出来的是entity而 接口返回的是dto 所要BeanUtils.copyProperties复制属性,和pageutils.copyProperties 复制分页属性

public class PageUtils {

public static void copyProperties(PageInfo> source, PageInfo> des) {

des.setEndRow(source.getEndRow());

des.setFirstPage(source.getFirstPage());

des.setHasNextPage(source.isHasNextPage());

des.setHasPreviousPage(source.isHasPreviousPage());

des.setIsFirstPage(source.isIsFirstPage());

des.setIsLastPage(source.isIsLastPage());

des.setNavigatepageNums(source.getNavigatepageNums());

des.setNavigatePages(source.getNavigatePages());

des.setNextPage(source.getNextPage());

des.setOrderBy(source.getOrderBy());

des.setPageNum(source.getPageNum());

des.setPages(source.getPages());

des.setPageSize(source.getPageSize());

des.setPrePage(source.getPrePage());

des.setSize(source.getSize());

des.setStartRow(source.getStartRow());

des.setTotal(source.getTotal());

}

}

4.使用示例

在OrderService实现类中

import com.github.pagehelper.PageInfo;

import com.javxuan.common.util.PageUtils;

import com.javxuan.order.entity.Order;

import com.javxuan.order.response.OrderDto;

import com.javxuan.order.service.PageService;

import org.springframework.beans.BeanUtils;

import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;

public class OrderServcieImpl implements IOrderServcie, PageService {

@Autowired

IOrderMapper orderMapper;

@GetMapping("/order")

public PageInfo list(OrderRequest orderRequest){

//设置默认分页信息 PageService的方法

setDefaultPageInfo(orderRequest);

//查出order列表

List orderList = orderMapper.selectList();

//将entity的列表分页

PageInfo orderPageInfo = new PageInfo<>(orderList);

//连续显示5页与上面的二选一

//PageInfo orderPageInfo = new PageInfo<>(orderList,5);

//定义一个数据传输对象dtoList

List dtoList = new ArrayList<>();

if(null==orderList || orderList.size<=0){

return null;

}

//给dtoList 加值

for(Order order:orderList){

OrderDto dto = new OrderDto();

//将entity 的属性值 复制给dto上

BeanUtils.copyProperties(order, dto);

dtoList.add(dto);

}

//给dto 分页

PageInfo dtoPageInfo = new PageInfo<>(dtoList);

//连续显示5页 与上面的二选一

//PageInfo orderPageInfo = new PageInfo<>(orderList,5);

//将entity的分页信息复制给dtoPageInfo上

PageUtils.copyProperties(orderPageInfo, dtoPageInfo);

return dtoPageInfo;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值