ssm学习(五)--加入分页插件

之前我们的查询列表是将所有的数据查询出来,并没有做分页,当数据很少的时候,是不需要分页,但是如果数据很多的时候,所有数据显示在一个页面显然是不合适的。

之前用hibernate的时候,可以直接通过查询来指定页码和条数,在mybatis我没有找到类似功能,所以上网查找别人是如何做的,找到了pagehelper这个插件,这也是在mybatis的项目中主流用的插件。自己试了一下也发现很好用。

废话不多说,直接说怎么用吧。

1.首先在maven的配置文件中加入以下配置。

    <!-- 分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.0.3-beta</version>
        </dependency>

2.接着在spring配置文件中加入如下配置。

    <!-- 配置mybatis -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 数据源 -->
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!-- mapper扫描 -->
        <property name="mapperLocations" value="classpath:com/m_gecko/entity/*.xml"></property>
        <!-- 分页插件 -->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <value>
                            helperDialect=mysql
                        </value>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

注意分页插件那段配置。

3.其实有了上面两个配置就大功告成了,接下来就是用这个插件了。我们来修改geckoList这个方法,将数据分页。如下。

    @RequestMapping("geckoList")
    public ModelAndView geckoList(@RequestParam(required=true,defaultValue="1")Integer page,@RequestParam(required=false,defaultValue="5")Integer pageSize) throws Exception {
        PageHelper.startPage(page, pageSize);
        ModelAndView mv = new ModelAndView();
        List<TGecko> geckoList = geckoService.getGeckoList();
        mv.getModel().put("geckoList", geckoList);
        PageInfo<TGecko>p=new PageInfo<TGecko>(geckoList);
        mv.getModel().put("page", p);
        mv.setViewName("gecko/GeckoList");
        return mv;
    }

注意这个方法中传入了两个参数,page和pagesize这两个参数,然后我们就可以把list放入pageInfo中重新包装,得到当前页面的list(而不是全部),然后把page对象传递到页面去,在页面上我们可以用${page.xxx}来使用page里面的东西。

修改页面,如下。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>geckoList</title>
<!-- css文件 -->
<link rel="stylesheet" href="./static/bootstrap/css/bootstrap.min.css" />
<link rel="stylesheet"
    href="./static/bootstrap/css/bootstrap-theme.min.css">
<!-- js文件 -->
<script type="text/javascript" src="./static/js/jquery-1.11.0.js"></script>
<script type="text/javascript">
    function MemAdd() {
        h = "geckoAdd";
        location.href = h;
    }
    function deleteGecko(geckoId){
        if (confirm(‘确定删除?‘)){
            $.ajax({
                type : ‘post‘,
                url : ‘geckoDelete?geckoId=‘+geckoId,
                async : false,
                dataType : ‘html‘,
                success : function(data) {
                    if (data > 0) {
                        alert("成功");
                    } else {
                        alert("失败")
                    }
                    location.href = "geckoList";
                }
            })
        }
    }
</script>
</head>
<body>
    <form>
        <div class="row" style="text-align: center">
            <div class="col-lg-5" style="font-size: 18px">
                <strong>hello,welcome to gecko‘s world</strong>
            </div>
            <div class="col-lg-2 col-xs-offset-1">
                <button type="button" class="btn  btn-sm" onclick="MemAdd()">新增</button>
            </div>

        </div>
        <div class="row">
            <div class="col-lg-8 col-xs-offset-1">
                <table class="table">
                    <tr>
                        <th>编号</th>
                        <th>名称</th>
                        <th>创建时间</th>
                        <th>操作</th>
                    </tr>
                    <c:choose>
                        <c:when test="${not empty geckoList }">
                            <c:forEach items="${geckoList }" var="gecko" varStatus="vs">
                                <tr>
                                    <td>${gecko.geckoId}</td>
                                    <td>${gecko.geckoName}</td>
                                    <td><fmt:formatDate type="both" dateStyle="medium"
                                            timeStyle="medium" value="${gecko.createTime}" /></td>
                                    <td><a href="geckoEdit?geckoId=${gecko.geckoId}">编辑</a>&nbsp;&nbsp;<a
                                        href=‘javascript:void(0)‘
                                        onclick="deleteGecko(${gecko.geckoId})">删除</a></td>
                                </tr>
                            </c:forEach>
                        </c:when>
                        <c:otherwise>
            没有相关数据
            </c:otherwise>
                    </c:choose>
                </table>
            </div>
        </div>
        <div class="row">
            <div class="col-lg-8 col-xs-offset-7">
                <c:forEach var="i" begin="1" end="${page.pages }" step="1">
                    <a href="geckoList?page=${i}">${i}</a>
                </c:forEach>
                <a href="geckoList?page=${page.prePage}">上一页</a> <a
                    href="geckoList?page=${page.nextPage}">下一页</a>
            </div>
        </div>
    </form>
</body>
</html>

主要加入了相关的分页代码。

访问geckoList,如下。

点击第二页,发现浏览器地址栏如下。

点击上一页,下一页均可以实现页面跳转。至于更优美的分页插件(指的是页面端),以后有机会会写。

时间: 2024-10-12 23:41:39

ssm学习(五)--加入分页插件的相关文章

MyBatis学习总结_17_Mybatis分页插件PageHelper

如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊情况请看重要提示. 想要使用分页插件?请看如何使用分页插件. 物理分页 该插件目前支持以下数据库的物理分页: Oracle Mysql MariaDB SQLite Hsqldb PostgreSQL DB2 SqlServer(2005,2008) Informix H2 SqlServer2012 配置dialect属性时,可以使用小写形式: Oracle,MySQL

MyBatis学习总结(17)——Mybatis分页插件PageHelper

如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊情况请看重要提示. 想要使用分页插件?请看如何使用分页插件. 物理分页 该插件目前支持以下数据库的物理分页: Oracle Mysql MariaDB SQLite Hsqldb PostgreSQL DB2 SqlServer(2005,2008) Informix H2 SqlServer2012 配置dialect属性时,可以使用小写形式: oracle,mysql

SSM框架使用分页插件显示信息

1.在该SSM工程的pom.xml中加入PageHelper的分页插件依赖(若是版本号不对,可以尝试修改一下) 1 <!-- 分页插件 --> 2 <dependency> 3 <groupId>com.github.miemiedev</groupId> 4 <artifactId>mybatis-paginator</artifactId> 5 <version>1.2.15</version> 6 <

Mybatis分页插件PageHelper的学习与使用

目录 中文教程 PageHelper使用 后端程序员都知道,在Web系统中,分页是一种常见的功能,我之前写的分页方法都比较麻烦,移植性也不高,这就很不乐观了.作为一个积极开朗的程序员,怎么能不去了解PageHelper分页插件呢?PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,一致支持mysql.oracle.mariaDB.DB2.SQLite.Hsqldb等.OK接下来就一起来了解了解PageHelper分页插件! @ 中文教程 首先,推荐

项目中PageHelper分页插件的使用实例(SSM)

分页(英语:Paging),是一种操作系统里存储器管理的一种技术,可以使计算机的主存可以使用存储在辅助存储器中的数据.操作系统会将辅助存储器(通常是磁盘)中的数据分区成固定大小的区块,称为“页”(pages).当不需要时,将分页由主存(通常是内存)移到辅助存储器:当需要时,再将数据取回,加载主存中.相对于分段,分页允许存储器存储于不连续的区块以维持文件系统的整齐.[1]分页是磁盘和内存间传输数据块的最小单位. 分页/虚拟内存能有助“大大地”降低整体及额外非必要的 I/O 次数,提高系统整体运作性

ssm下使用分页插件PageHelper进行分页

1. 导入maven依赖: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency> 2. 编写SqlConfig.xml配置文件(这个文件的名字任意) <?xml version="1.0&quo

小白的springboot之路(十五)、mybatis的PageHelper分页插件使用

0.前言 用mybatis,那么分页必不可少,基本都是用PageHelper这个分页插件,好用方便: 1.实现 1.1.添加依赖: <!-- 3.集成 mybatis pagehelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version

Mybatis分页插件

Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页. 点击提交BUG 版本说明 最新版本为3.7.5 PageInfo中的judgePageBoudary方法修改: isLastPage = pageNum == pages && pageNum != 1; //改为 isLastPage

分页插件PageHelper配置步骤(mybatis)

原理: mybatis执行sql步骤: 通过sqlsessionFactory  sqlsession Exector  (执行器对象)mappedstatement(sql语句封装) 在执行mappedstatement前在sql语句上加上limit即可实现分页 步骤: 一.引入pageHelper的jar包 二.在mybatis的xml文件中配置分页插件 <!-- plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下: properties?, settings?, typeA