spring+mybatis项目自定义PageUtil类实现分页

本文档介绍了如何在Spring+Mybatis项目中创建自定义的PageUtil类来实现分页功能。从在util包下创建PageUtil类开始,详细讲解了dao持久层、service业务层接口及其实现、controller层方法以及jsp页面的实现过程,最终展示了分页效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在util包下新建PageUtil类

在这里插入图片描述
pageutil类代码如下:

package com.fanyu.myGdProject;

import com.fanyu.myGdProject.entity.Alarm;

import java.util.List;

public class PageUtil {
   

    private int currentPageNum; //当前要看哪一页

    private int pageSize;//每页显示的默认条数(可以固定也可以用户自定义,在这里是用户自定义)

    private int totalSize;//总记录条数

    private int startIndex;//查询开始记录的索引 limit ? ?

    private int totalPageNum;//总页数

    private int prePageNum;//上一页

    private int nextPageNum;//下一页

    private List<Alarm>  records;//当前页的记录集(该页显示的所有数据)


    //用于显示页面上的导航的页号  用户可自定义

    private int startPageNum;

    private int endPageNum;

    private String url;


    //使用构造方法,传递必要的两个参数.第一个是页码,第二个是每页条数,第三个总记录条数
    public PageUtil(int currentPageNum,int pageSize,int totalrecords)
    {
   
        this.pageSize = pageSize;
        this.currentPageNum=currentPageNum;
        this.totalSize=totalrecords;
        //计算开始记录索引
        this.startIndex=(currentPageNum-1)*pageSize;
        //计算总页数
        this.totalPageNum=totalSize%pageSize==0?totalSize/pageSize:totalSize/pageSize+1;
        //计算开始和结束页号  这个根据自身可设计
        if(totalPageNum>9)
        {
   
            startPageNum=currentPageNum-4;
            endPageNum=currentPageNum+4;

            if(startPageNum<1)
            {
   
                startPageNum=1;
                endPageNum=startPageNum+8;
            }
            if(endPageNum>totalPageNum)
            {
   
                endPageNum=totalPageNum;
                startPageNum=endPageNum-8;
            }

        }
        else
        {
   
            startPageNum=1;
            endPageNum=totalPageNum;

        }


    }


    public int getStartPageNum() {
   
        return startPageNum;
    }


    public void setStartPageNum(int startPageNum) {
   
        this.startPageNum = startPageNum;
    }


    public int getEndPageNum() {
   
        return endPageNum;
    }


    public void setEndPageNum(int endPageNum) {
   
        this.endPageNum = endPageNum;
    }


    public int getPrePageNum() {
   
        prePageNum=currentPageNum-1;

        if(prePageNum<=0)
        {
   
            prePageNum=1;
        }
        return prePageNum;
    }

    public int getNextPageNum() {
   

        nextPageNum=currentPageNum+1;

        if(nextPageNum>totalPageNum)
        {
   
            nextPageNum=totalPageNum;
        }
        return nextPageNum;
    }

    public int getCurrentPageNum() {
   
        return currentPageNum;
    }

    public void setCurrentPageNum(int currentPageNum) {
   
        this.currentPageNum = currentPageNum;
    }

    public int getPageSize() {
   
        return pageSize;
    }

//    public int getPreOrderedSize(){
   
//
//    }

    public void setPageSize(int pageSize) {
   
        this.pageSize = pageSize;
    }

    public int getTotalSize() {
   
        return totalSize;
    }

    public void setTotalSize(int totalSize) {
   
        this.totalSize = totalSize;
    }

    public int getStartIndex() {
   
        return startIndex;
    }

    public void setStartIndex(int startIndex) {
   
        this.startIndex = startIndex;
    }

    public int getTotalPageNum() {
   
        return totalPageNum;
    }

    public void setTotalPageNum(int totalPageNum) {
   
        this.totalPageNum = totalPageNum;
    }

    public List  getRecords() {
   
        return records;
    }

    public void setRecords(List  records) {
   
        this.records = records;
    }

    public void setPrePageNum(int prePageNum) {
   
        this.prePageNum = prePageNum;
    }

    public void setNextPageNum(int nextPageNum) {
   
        this.nextPageNum = nextPageNum;
    }


    public String getUrl() {
   
        return url;
    }


    public void setUrl(String url) {
   
        this.url = url;
    }





}

2.dao持久层及其实现

package com.fanyu.myGdProject.dao;

import com.fanyu.myGdProject.entity.Alarm;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository("alarmDao")
public interface AlarmDao {
   
    void insert(Alarm alarm);

    void delete(Integer id);

    void deleteAllBySid(Integer sid);

    void update(Alarm alarm);

    List<Alarm> selectAll();

    //int total();
//
    List<Alarm> selectAllAlarms(@Param("startIndex") int startIndex, @Param("pageSize") int pageSize) throws Exception;//limit ?,?
/
    Alarm selectById(Integer id);


}

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.4//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fanyu.myGdProject.dao.AlarmDao">
    <!--配置实体类和表的对应关系-->
<!--    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">-->
<!--        <property name="dataSource" ref="dataSource"/>-->
<!--        &lt;!&ndash;这个包里的可以自动设置别名,这样在映射文件里使用实体类类名的时候就不需要用全称了,可以简化操作&ndash;&gt;-->
<!--        <property name="typeAliasesPackage" value="com.fanyu.myGdProject.entity"/>-->
<!--    </bean>                                              可以直接使用实体类名称-->
    <resultMap id="resultMap" type="Alarm">
        <id property="id" column="id" javaType="Integer"/>
        <result property="sid" column="sid" javaType="Integer"/>
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值