`

03_分页插件HelpPager(GitHub旗下产品,非常方便)

 
阅读更多
其它
0去掉JavaScript验证,解决红叉问题(这个与分页无关)

正常:







03_分页插件

0.1 使用,红色框这个对象也可以写成两个参数:当前第几页,每页显示条数。这两个参数非常重要可以用来设置每页显示的条数。(这个分页插件dao(mapper)不用做任何操作,非常方便)看下面图片后的代码:



1 mybatis分页插件,首先在pom.xml添加分页的jar


<!-- 分页的组件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.0.0</version>
</dependency>
上面的会下载如下的两个jar包

2 添加mybatis分页插件,在mybatis-config.xml文件中加入如下:
<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageHelper">
        <property name="dialect" value="mysql"/>
        <!-- 该参数默认为false -->
        <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
        <!-- 和startPage中的pageNum效果一样-->
        <property name="offsetAsPageNum" value="true"/>
        <!-- 该参数默认为false -->
        <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
        <property name="rowBoundsWithCount" value="true"/>
        <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
        <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
        <property name="pageSizeZero" value="true"/>
        <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
        <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
        <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
        <property name="reasonable" value="false"/>
        <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
        <!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
        <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->
        <!-- 不理解该含义的前提下,不要随便复制该配置 -->
        <property name="params" value="pageNum=start;pageSize=limit;"/>
        <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
        <property name="returnPageInfo" value="check"/>
    </plugin>
    </plugins>


3 编写Controller
@RequestMapping("/query")
/*
* 参数说明:
* @RequestParam(defaultValue="1")int pageNum, 这个是显示第几页,给默认参数设置为1
* @RequestParam(defaultValue="2")int pageSize 这个是每页显示数据条数,给默认参数为2
*/
public String query(@RequestParam(defaultValue="1")int pageNum,@RequestParam(defaultValue="2")int pageSize,Model model){
PageInfo<Userbean> pageInfo = userService.queryAll(pageNum,pageSize);
model.addAttribute("pageModel", pageInfo);
return "user/userlist";
}
4 编写Service 接口和实现类
接口
PageInfo<Userbean> queryAll(int pageNum, int pageSize);

@Override
public PageInfo<Userbean> queryAll(int pageNum, int pageSize) {
//这个用来调用插件
PageHelper.startPage(pageNum, pageSize);
/*这个方法看着是查询全部的数据,调用了上面这句代码,就会会自动给
* UserbeanMapper.xml 里面的代码:
    <select id="queryAll" resultType="userbean">
     select
       <include refid="Base_Column_List" />
      from t_user
    </select>
        加上limt x,y
*/
List<Userbean> list=userMapper.queryAll();
PageInfo<Userbean> pageInfo = new PageInfo<Userbean>(list);
return pageInfo;
}

6 编写UserbeanMapper.Java
和  UserbeanMapper.xml
我们发现 这两个与不使用分页的写法一致,也就是dao层不用做任何的变化就可以实现分页。

接口
List<Userbean> queryAll();


<select id="queryAll" resultType="userbean">
     select
       <include refid="Base_Column_List" />
      from t_user
    </select>

7  编写公共页面pageBar.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<div>
        共有${pageModel.total }条记录,共${pageModel.pages }页,每页
      <select name="pageSize" onchange="changePageSize(this.value)" style="width: 50px;">
          <option value="10" ${pageModel.pageSize==10?"selected":"" }>10</option>
          <option value="20"  ${pageModel.pageSize==20?"selected":"" }>20</option>
          <option value="50"  ${pageModel.pageSize==50?"selected":"" }>50</option>
          <option value="100"   ${pageModel.pageSize==100?"selected":"" }>100</option>
      </select> 
        条记录,当前${pageModel.pageNum }/${pageModel.pages }页,
    <a href="javascript:homePage()">首页</a>|
    <a href="javascript:frontPage()">上一页</a>|
    <a href="javascript:nextPage()">下一页</a>|
    <a href="javascript:lastPage()">尾页</a>|
    转到<select name="pageNum" onchange="goPage(this.value)" style="width: 50px;">
       <c:forEach begin="1" end="${pageModel.pages }" var="i">
          <option value=${i }  ${pageModel.pageNum==i?"selected":"" }>${i }</option>
       </c:forEach>
    </select>
   </div>
  
  
    <script type="text/javascript">
       function homePage(){
       document.getElementById("pageNum").value=1;
       document.getElementById("pager").submit();//表单提交
      
       }
       function frontPage(){
       document.getElementById("pageNum").value=${pageModel.pageNum<=1? 1 : pageModel.pageNum-1 };
       document.getElementById("pager").submit();//表单提交
       }
       function nextPage(){
       document.getElementById("pageNum").value=${pageModel.pageNum>=pageModel.pages?pageModel.pages:pageModel.pageNum+1 };
       document.getElementById("pager").submit();//表单提交
       }
       function lastPage(){
       document.getElementById("pageNum").value=${pageModel.pages };
       document.getElementById("pager").submit();//表单提交
       }
       function goPage(cur_page){
       document.getElementById("pageNum").value=cur_page;
       document.getElementById("pager").submit();//表单提交
       }
       function changePageSize(cur_pageSize){
       document.getElementById("pageSize").value=cur_pageSize;
       document.getElementById("pager").submit();//表单提交
       }
    </script>
8列表页面加上分页功能
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE html>
<html>
<head>
  <base href="<%=basePath%>">
    <title>用户列表</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="Css/bootstrap.css" />
    <link rel="stylesheet" type="text/css" href="Css/bootstrap-responsive.css" />
    <link rel="stylesheet" type="text/css" href="Css/style.css" />
    <script type="text/javascript" src="Js/jquery.js"></script>
    <script type="text/javascript" src="Js/jquery.sorted.js"></script>
    <script type="text/javascript" src="Js/bootstrap.js"></script>
    <script type="text/javascript" src="Js/ckform.js"></script>
    <script type="text/javascript" src="Js/common.js"></script>



    <style type="text/css">
        body {
            padding-bottom: 40px;
        }
        .sidebar-nav {
            padding: 9px 0;
        }

        @media (max-width: 980px) {
            /* Enable use of floated navbar text */
            .navbar-text.pull-right {
                float: none;
                padding-left: 5px;
                padding-right: 5px;
            }
        }


    </style>
</head>
<body>
<form class="form-inline definewidth m20" action="index.html" method="get">   
    用户名称:
    <input type="text" name="username" id="username"class="abc input-default" placeholder="" value="">&nbsp;&nbsp; 
    <button type="submit" class="btn btn-primary">查询</button>&nbsp;&nbsp; <button type="button" class="btn btn-success" id="addnew">新增用户</button>
</form>
<table class="table table-bordered table-hover definewidth m10">
    <thead>
    <tr>
        <th>用户id</th>
        <th>用户名称</th>
        <th>所在部门</th>
        <th>真实名称</th>
        <th>电话号码</th>
        <th>操作</th>
    </tr>
    </thead>
    <!-- 注意1这里使用pageModel这个对象 ,这个对象在下面的表单也有使用,所有在Controller转发过来之前名称一定对应上 -->
    <!-- 注意2 pageModel.list 这个list来自底层插件里面的名称,所以可以直接使用list,追踪代码观察一下即可 -->
       <c:forEach items="${pageModel.list }" var="u">
     <tr>
            <td>${u.userid } </td>
            <td>${u.username }</td>
            <td>${u.departmentid }</td>
            <td>${u.realname }</td>
            <td>${u.phonenumber }</td>
            <td>
                <a href="edit.html">编辑</a> 
                <a href="edit.html">删除</a>              
            </td>
        </tr>
        </c:forEach>
</table>
<form action="user/query" id="pager" name="pager" method="post">
   <input type="hidden" name="pageNum" id="pageNum" value="${pageModel.pageNum}">
    <input type="hidden" name="pageSize" id="pageSize" value="${pageModel.pageSize}">
</form>
<div class="inline pull-right page">
  <%@include file="../../pageBar.jsp" %>
</div>
</body>
</html>
<script>
    $(function () {
       

$('#addnew').click(function(){

window.location.href="add.html";
});


    });

function del(id)
{


if(confirm("确定要删除吗?"))
{

var url = "index.html";

window.location.href=url;

}




}
</script>


注意这个页面的地方:


9运行结果


分页单表集成完成!!
详细请看源码。
分享到:
评论

相关推荐

    Neat_hovercards_for_GitHub._github-hovercard.zip

    Neat_hovercards_for_GitHub._github-hovercard

    SwitchyOmega_Chromium.crx v2_5_20 github最新版

    SwitchyOmega_Chromium.crx v2_5_20 github最新版 存在百度云网盘了,需要的可以下载

    PyPI 官网下载 | cdktf_cdktf_provider_github-0.3.66-py3-none-any.whl

    cdktf_provider_github则是cdktf的一个提供商插件,专门用于管理GitHub资源。它允许开发者通过cdktf来操作GitHub上的组织、仓库、项目卡等。通过这个库,你可以轻松地创建、更新或删除GitHub上的各种实体,从而实现...

    GitHub Copilot webstome插件

    GitHub Copilot 是一款由 GitHub 和 OpenAI 联合开发的智能代码助手,它能够集成在多种代码编辑器和IDE中,为程序员提供自动化代码补全功能。这款工具利用先进的机器学习技术,根据上下文理解程序员的需求,自动生成...

    jquery_pagination分页插件下载

    详细参考:http://blog.csdn.net/xiejx618/article/details/47299491 后台的主要任务是获取总记录数和列表数据,剩下的分页功能可以交给前台来做就可以了...建议详细参考官方文档来了解各个配置参数含义

    GitHub_汉化插件 给像我这样英文渣渣同学的福利。

    但请注意,虽然汉化插件能方便理解,但为了保持与国际开发社区的同步,掌握基本的GitHub英文术语仍然是必要的。 在熟悉了GitHub的基本操作后,你可以根据个人需要选择关闭汉化插件,回归英文模式。这是因为许多高级...

    PyPI 官网下载 | cdktf_cdktf_provider_github-0.4.53-py3-none-any.whl

    **cdktf_provider_github** 是cdktf的一个提供商插件,专门用于与GitHub进行交互。这个库提供了与GitHub API的接口,让开发者能够轻松地在Terraform配置中创建、管理GitHub组织、仓库、访问令牌、Webhooks等资源。...

    Mybatis分页插件PageHelper简单使用.rar_C41_mybatis pagehelper_mybatis分页插件

    Mybatis PageHelper是一款非常流行的Mybatis分页插件,它为Mybatis提供了高效且便捷的分页功能。在Java Web开发中,数据的分页显示是必不可少的,尤其是在处理大量数据时,PageHelper能帮助我们有效地管理和展示数据...

    ILRuntimeDebugger _VS15_17_19GitHub.zip

    ILRuntime热更新,相关的调试插件,自己在用的,如果想看详细的用法,可以去看看我的博客,里面有详细介绍,或者直接联系我。

    GitHub下载加速.zip

    插件伴侣通常是指一些辅助工具,它们能帮助用户更方便地安装、管理或者增强主插件的功能。在这个案例中,"插件伴侣"可能是一个辅助工具,用于简化插件的安装过程,或者提供额外的设置和控制选项,以优化GitHub下载...

    VsCode GitHub Copilot插件安装包1.133.0.0

    **GitHub Copilot 插件详解** GitHub Copilot 是一款由 GitHub 开发的智能代码助手,它结合了人工智能技术,能够帮助开发者在 Visual Studio Code(VsCode)等集成开发环境中自动编写代码。这款插件是基于 OpenAI ...

    如何使用分页插件.pdf

    分页插件PageHelper是一个广泛使用的MyBatis分页插件,能够简化分页操作,在Spring和MyBatis集成的项目中使用分页功能时非常方便。接下来,将详细介绍如何使用PageHelper分页插件。 1. 引入分页插件 要使用...

    1024官方客户端

    唯一官方发布APP,好用 唯一官方发布APP,好用 唯一官方发布APP,好用

    update_web_site_github:定制GitHub项目网站的说明,并集成了Lytebox插件(布局略有修改)

    update_web_site_github 定制GitHub项目网站的说明,并集成了Lytebox插件(布局略有修改)资料来源指示使用向导创建项目网站(文本,代码,标题等),添加图像并在必要时发布# DescriptionCe calendrier utilise ...

    Mybatis分页插件 PageHelper5.0.0 使用

    "Mybatis 分页插件 PageHelper5.0.0 使用" Mybatis 分页插件 PageHelper5.0.0 是一个功能强大且易于使用的分页插件,它可以帮助开发者快速实现 Mybatis 的物理分页操作。下面是使用 PageHelper5.0.0 实现分页的详细...

    github_mirror_gitea:将GitHub同步到Gitea

    Github:获取所有您可以访问的仓库(已分页) Gitea:添加回购X Gitea:已经存在了吗? 镜像同步! git clone https://github.com/mpdroog/github_mirror_gitea cd github_mirror_gitea cp _config.example....

    访问 github 等插件

    访问 github 等插件

    PageHelper分页插件.pdf

    ### PageHelper 分页插件详解 #### 一、PageHelper 分页插件概述 PageHelper是一款专门为MyBatis设计的高性能、易用的分页插件。它支持多种主流数据库,如MySQL、Oracle、MariaDB、DB2、SQLite、HSQLDB等。此插件...

    Visual Studio Code 插件 GitHub Copilot 离线资源 1.100.0.0

    而GitHub Copilot是GitHub推出的一款AI辅助编程工具,它可以作为VS Code的插件使用,为程序员提供智能化的代码建议,从而提高开发效率。 GitHub Copilot插件是基于OpenAI Codex的,这是一个强大的自然语言处理模型...

    GitHub Copilot Visual Studio 2022 扩展插件安装包

    GitHub Copilot Visual Studio 2022 扩展插件安装包 vs插件管理安装太慢。直接下载下来给大家使用,ai智能编程插件,解放生产力让编程更高效。

Global site tag (gtag.js) - Google Analytics