zoukankan      html  css  js  c++  java
  • Mybatis分页插件--------Pagehelper

    第一步:导入依赖

    <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.4</version>
    </dependency>

    第二步:在mybatis的全局配置文件mybatis-config.xml中配置该插件
            Spring的相关配置:

    <!-- 2.配置session工厂 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocation" value="classpath:mybatis-config.xml" />
    <property name="mapperLocations" value="classpath:mappers/*.xml"/>
    </bean>
     在classpath:mybatis-config.xml中配置该插件
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    <!-- 配置分页插件 -->
    <plugins>
    <plugin interceptor="com.github.pagehelper.PageHelper">
    <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->
    <property name="dialect" value="mysql"/>
    </plugin>
    </plugins>
    
    </configuration>
    第三步 在Java代码中的查询语句之前调用插件
    /**
    * 去所有文章展示页面,这个是去博客空间的主页
    *
    * @return 携带上文章的参数,去文章首页
    */
    @RequestMapping(value = {URL_ARTICLE_LIST} ,method = {GET})
    public ModelAndView home(HttpServletRequest request){
    //拿到用户需要的是哪一页的文章数据
    String str_pageNo = request.getParameter("pageNo");
    if(str_pageNo == null){
    //开始使用分页插件,准备查询第一页的8条数据
    PageHelper.startPage(1, 8);
    } else{
    //准备查询 第X页 的8条数据
    PageHelper.startPage(Integer.parseInt(str_pageNo), 8);
    }
    //参数Map
    final Map<String,Object> map = Maps.newHashMap();
    //获取所有作者的所有文章
    final List<Article> articles = articleService.getAllArticle();
    //将查询结果放入分页控件中
    final PageInfo<Article> pageInfo=new PageInfo<>(articles);
    
    //组装数据,在JSP页面可以通过 ${articles} 或者 ${pageInfo}请求获取数据
    map.put("articles",articles);
    map.put("pageInfo",pageInfo);
    //返回某个具体的JSP页面,并且携带上map里面的存储的数据
    return new ModelAndView(FWD_ARTICLE_LIST_HOME,map);
    }

    第四步 在页面使用分页信息

    <!--下面的分页代码由Jay于18/3/26日修改,可以重用多次,请不要修改太多-->
    <div style="text-align: center">
    <ul class="pagination">
    <li
    <c:if test="${pageInfo.pageNum==1}">
    class="disabled"
    </c:if>>
    <a href="<c:url value="/actions/article/list?pageNo=1"/> ">«</a>
    </li>
    <li>
    <!--如果当前页数是第一页,那么点上一页仍然是当前页。 -->
    <a href="<c:url value="/actions/article/list?pageNo=${pageInfo.pageNum==1?pageInfo.pageNum:pageInfo.pageNum-1}"/> ">上一页</a>
    </li>
    <!--判断最大页数是否超过X,如果超过X则是X,否则是最大页数。防止分页信息过长 -->
    <c:forEach begin="1" end="${pageInfo.pages>8?8:pageInfo.pages}" step="1" var="pageNo">
    <li
    <c:if test="${pageInfo.pageNum==pageNo}">
    class="active"
    </c:if>>
    <a href="<c:url value="/actions/article/list?pageNo=${pageNo}"/> ">${pageNo}</a>
    </li>
    </c:forEach>
    <li>
    <!--如果当前页数是最后一页,那么点击下一页仍然是当前页。 -->
    <a href="<c:url value="/actions/article/list?pageNo=${pageInfo.pageNum==pageInfo.pages?pageInfo.pageNum:pageInfo.pageNum+1}"/> ">下一页</a>
    </li>
    <li
    <c:if test="${pageInfo.pageNum==pageInfo.pages}">
    class="disabled"
    </c:if>>
    <a href="<c:url value="/actions/article/list?pageNo=${pageInfo.pages}"/> ">»</a>
    </li>
    </ul>
    </div>

    需要在JSP页面导入的CSS样式,摘自bootstrap

    <style>
    .pagination {
    display: inline-block;
    padding-left: 0;
    margin: 20px 0;
    border-radius: 4px
    }
    
    .pagination > li {
    display: inline
    }
    
    .pagination > li > a, .pagination > li > span {
    position: relative;
    float: left;
    padding: 6px 12px;
    margin-left: -1px;
    line-height: 1.42857143;
    color: #337ab7;
    text-decoration: none;
    background-color: #fff;
    border: 1px solid #ddd
    }
    
    .pagination > li:first-child > a, .pagination > li:first-child > span {
    margin-left: 0;
    border-top-left-radius: 4px;
    border-bottom-left-radius: 4px
    }
    
    .pagination > li:last-child > a, .pagination > li:last-child > span {
    border-top-right-radius: 4px;
    border-bottom-right-radius: 4px
    }
    
    .pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover {
    z-index: 2;
    color: #23527c;
    background-color: #eee;
    border-color: #ddd
    }
    
    .pagination > .active > a, .pagination > .active > a:focus, .pagination > .active > a:hover, .pagination > .active > span, .pagination > .active > span:focus, .pagination > .active > span:hover {
    z-index: 3;
    color: #fff;
    cursor: default;
    background-color: #337ab7;
    border-color: #337ab7
    }
    
    .pagination > .disabled > a, .pagination > .disabled > a:focus, .pagination > .disabled > a:hover, .pagination > .disabled > span, .pagination > .disabled > span:focus, .pagination > .disabled > span:hover {
    color: #777;
    cursor: not-allowed;
    background-color: #fff;
    border-color: #ddd
    }
    </style>

    第五步 效果展示

  • 相关阅读:
    Linux使用退格键时出现^H解决方法
    Linux centos7下php安装cphalcon扩展的方法
    Webstorm/Phpstorm中设置连接FTP,并快速进行文件比较,上传下载,同步等操作
    在Vmware中安装CentOS7
    php stomp.dll 下载地址
    WIN7 64位系统安装JDK并配置环境变量
    SVN如何将版本库url访问地址中的https改为http
    两个日期这间的间隔天数
    vi/vim 命令速查手册
    判断PC或mobile设备
  • 原文地址:https://www.cnblogs.com/wangjintao-0623/p/10412159.html
Copyright © 2011-2022 走看看