mybatis的分页插件

news2024/11/27 18:40:16

 在mybatis核心配置文件中:

这时已经用了SSM整合,好多像是mapper或者数据源等都移出去了

<?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.PageInterceptor"></plugin>
</plugins>
</configuration>

 

分页计算公式:

select * from product_info limit 起始记录=((当前页-1)*每页的条数),每页多少条

排序查询可以按照id降序排序,新插入的就排在前面

Service层

//select * from product_info limit 起始记录数=(当前页-1)*每页的条数),每页取几条
@Override
public PageInfo<ProductInfo> splitPage(int pageNum, int pageSize) {
    //分页插件使用PageHelper工具类
    PageHelper.startPage(pageNum,pageSize);
    //进行PageInfo的数据封装
    //进行有条件的查询操作,必须要创建ProductInfoExample
    ProductInfoExample productInfoExample=new ProductInfoExample();
    //设置排序,按主键降序排序
    productInfoExample.setOrderByClause("p_id desc");
    //设置排序完成后,取集合,切记:一定要在取集合之前设置PageHelp.startPage()
    List<ProductInfo> list=productInfoMapper.selectByExample(productInfoExample);
    //将查询到的集合封装到PageInfo对象中
    PageInfo<ProductInfo> pageInfo=new PageInfo<>(list);
    
    return pageInfo;
}

controller层开发

//显示第一页的五条记录
@RequestMapping("/split")
public String split(HttpServletRequest request) {
    PageInfo pageInfo =productInfoService.splitPage(1, 5);
    request.setAttribute("info",pageInfo);
    return "product";
}

它的所有数据页数,查询的结果等都存入到pageInfo中了

前端界面显示层

<div id="middle">
    <table class="table table-bordered table-striped">
        <tr>
            <th></th>
            <th>商品名</th>
            <th>商品介绍</th>
            <th>定价(元)</th>
            <th>商品图片</th>
            <th>商品数量</th>
            <th>操作</th>
        </tr>
        <c:forEach items="${info.list}" var="p">
            <tr>
                <td valign="center" align="center">
                    <input type="checkbox" name="ck" id="ck" value="${p.pId}" onclick="ckClick()"></td>
                <td>${p.pName}</td>
                <td>${p.pContent}</td>
                <td>${p.pPrice}</td>
                <td><img width="55px" height="45px"
                         src="${pageContext.request.contextPath}/image_big/${p.pImage}"></td>
                <td>${p.pNumber}</td>
                    <%--<td><a href="${pageContext.request.contextPath}/admin/product?flag=delete&pid=${p.pId}" onclick="return confirm('确定删除吗?')">删除</a>--%>
                    <%--&nbsp;&nbsp;&nbsp;<a href="${pageContext.request.contextPath}/admin/product?flag=one&pid=${p.pId}">修改</a></td>--%>
                <td>
                    <button type="button" class="btn btn-info "
                            onclick="one(${p.pId},${info.pageNum})">编辑
                    </button>
                    <button type="button" class="btn btn-warning" id="mydel"
                            onclick="del(${p.pId},${info.pageNum})">删除
                    </button>
                </td>
            </tr>
        </c:forEach>
    </table>

分页栏

<!--分页栏-->
<div id="bottom">
    <div>
        <nav aria-label="..." style="text-align:center;">
            <ul class="pagination">
                <li>
                        <%-- <a href="${pageContext.request.contextPath}/prod/split.action?page=${info.prePage}" aria-label="Previous">--%>
                    <a href="javascript:ajaxsplit(${info.prePage})" aria-label="Previous">

                        <span aria-hidden="true">«</span></a>
                </li>
                <c:forEach begin="1" end="${info.pages}" var="i">
                    <c:if test="${info.pageNum==i}">
                        <li>
                                <%--                                                <a href="${pageContext.request.contextPath}/prod/split.action?page=${i}" style="background-color: grey">${i}</a>--%>
                            <a href="javascript:ajaxsplit(${i})"
                               style="background-color: grey">${i}</a>
                        </li>
                    </c:if>
                    <c:if test="${info.pageNum!=i}">
                        <li>
                                <%--                                                <a href="${pageContext.request.contextPath}/prod/split.action?page=${i}">${i}</a>--%>
                            <a href="javascript:ajaxsplit(${i})">${i}</a>
                        </li>
                    </c:if>
                </c:forEach>
                <li>
                        <%--  <a href="${pageContext.request.contextPath}/prod/split.action?page=1" aria-label="Next">--%>
                    <a href="javascript:ajaxsplit(${info.nextPage})" aria-label="Next">
                        <span aria-hidden="true">»</span></a>
                </li>
                <li style=" margin-left:150px;color: #0e90d2;height: 35px; line-height: 35px;">总共&nbsp;&nbsp;&nbsp;<font
                        style="color:orange;">${info.pages}</font>&nbsp;&nbsp;&nbsp;页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <c:if test="${info.pageNum!=0}">
                        当前&nbsp;&nbsp;&nbsp;<font
                        style="color:orange;">${info.pageNum}</font>&nbsp;&nbsp;&nbsp;页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    </c:if>
                    <c:if test="${info.pageNum==0}">
                        当前&nbsp;&nbsp;&nbsp;<font
                        style="color:orange;">1</font>&nbsp;&nbsp;&nbsp;页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    </c:if>
                </li>
            </ul>
        </nav>
    </div>
</div>

分页的ajax,因为前端默认只返回第一页结果,其他的由ajax调用返回

<!--分页的AJAX实现-->
<script type="text/javascript">
    function ajaxsplit(page) {
        //取出查询条件
        var pname = $("#pname").val();
        var typeid = $("#typeid").val();
        var lprice = $("#lprice").val();
        var hprice = $("#hprice").val();
        //向服务发出ajax请求,请示page页中的所有数据,在当前页面上局部刷新显示
        $.ajax({
            url: "${pageContext.request.contextPath}/prod/ajaxSplit.action",
            data: {"page": page,"pname":pname,"typeid":typeid,"lprice":lprice,"hprice":hprice},
            type: "post",
            success: function () {
                //重新加载显示分页数据的容器
                
                $("#table").load("http://localhost:8080/admin/product.jsp #table");
            }
        });

    }

$("#table").load("http://localhost:8080/admin/product.jsp #table");重新容器加载在session中取出数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1291556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Scopus检索】第六届生物技术与生物医学国际学术会议(ICBB 2024)

第六届生物技术与生物医学国际学术会议 2024 6th International Conference on Biotechnology and Biomedicine (ICBB 2024) 第六届生物技术与生物医学国际学术会议&#xff08;ICBB 2024&#xff09;将于2024年03月29日-3月31日在中国-武汉市召开。ICBB 2024将围绕“生物技术…

Word 在页眉或页脚中设置背景颜色

目录预览 一、问题描述二、解决方案三、参考链接 一、问题描述 如何在word的页眉页脚中设置背景色&#xff1f; 二、解决方案 打开 Word 文档并进入页眉或页脚视图。在 Word 2016 及更高版本中&#xff0c;你可以通过在“插入”选项卡中单击“页眉”或“页脚”按钮来进入或者…

2021年度大题:灰太狼的密码

分析&#xff1a;本题主要使用的是素数进行输出&#xff0c;然后难点是如何按照题目要求格式输出。 思路&#xff1a; 第一&#xff1a;我们可以先让素数存给一个一维数组&#xff0c;至于存多少个素数&#xff0c;是矩阵n*n个&#xff0c;控制数量用计数器count即可&#xf…

移动设备安全管理,保护企业数据安全

移动安全管理&#xff08;MSM&#xff09;是一个术语&#xff0c;指的是为保护移动设备及其包含的数据而采取的措施。MSM 可以是主动的&#xff0c;也可以是被动的&#xff0c;具体取决于操作是在设备或数据泄露之前还是之后执行的。主动行动包括使用密码、加密和容器化来保护数…

系统思考与啤酒游戏经营沙盘

结束一家汽车零配件公司《系统思考与啤酒游戏经营沙盘》的内训课&#xff0c;4个小组基本上都有共同的心智模式&#xff0c;这也代表团队有一些集体的盲点。不仅仅对啤酒游戏经营沙盘做了复盘&#xff0c;同时也借用学员画出的系统环路图完成真实案例的研讨以及团队共识&#x…

easyexcel导出报错 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader

报错&#xff1a; org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoaderorg.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWit…

JVM:强软弱虚四种引用

下面依次解释五种引用 一、强引用 把一个对象赋值给一个引用变量&#xff0c;就相当于把这个对象的强引用放到变量中。 只要对象可达&#xff0c; GC一定不会回收这个对象&#xff08;A1&#xff09; 二、软引用 当一个对象&#xff08;A2&#xff09;没有强引用时&#xff…

【React Hooks】=> useId()

相比较使用全局变量 作为唯一 ID 和直接使用 useId 是有区别的。 官方解释如下&#xff1a; 如果是将 useId 作为 id 的情况下&#xff0c;是如下的形式 也就是说你使用了 useId 作为唯一 ID 那么在你删除数组某个元素之后不会导致某个 ID 被重复使用&#xff0c;如果使用的全…

测开速成考点

用户登录界面需要做哪些测试&#xff1f; ⑴功能&#xff1a;  正确的用户名&#xff0c;正确的密码&#xff0c;点击提交按钮&#xff0c;验证能否正确登录 是否跳转正确页面。  错误的用户名 或 密码&#xff0c;点击提交&#xff0c;提示相应的错误信息。  记住用户名…

你知道怎么上网最省钱吗?这样的搭配你不妨试一下。

不知道大家发现了没有&#xff0c;现在越来越多的人开始关注三大运营商推出的保号套餐&#xff0c;您知道这个问题为什么会成为大家关注的话题吗&#xff1f;下面我们一块儿来看一下 现如今&#xff0c;通话是次要的&#xff0c;流量才是王道&#xff0c;生活中的吃衣住行都是需…

[足式机器人]Part4 南科大高等机器人控制课 Ch02 Rigid Body Configuration and Velocity

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;CLEAR_LAB 笔者带更新-运动学 课程主讲教师&#xff1a; Prof. Wei Zhang 南科大高等机器人控制课 Ch02 Rigid Body Configuration and Velocity 1. Rigid Body Configuration1.1 Special Orthogonal Group1.2 Use of Ro…

观海微电子---触控显示模组一体化效果方案

随着车载电子后视镜及智能魔镜的普及类似镜面一体化要求的产品越来越多&#xff0c;行业熟知的木纹、一体黑、镜面显示都属于触控显示一体化效果。 一体化效果是指显示模组灭屏状态下玻璃盖板显示区域与非显示区域无明显的色差可见的效果&#xff0c;显示模组亮屏后显示仍可见&…

MATLAB机器人对偏导数、雅克比矩阵、行列式的分析与实践

偏导数、雅克比矩阵、行列式都是非常重要的知识点&#xff0c;为了让大家更容易看懂&#xff0c;尽量使用画图来演示。 1、偏导数Partial derivative 对于导数我们已经很清楚了&#xff0c;某点求导就是某点的斜率&#xff0c;也就是这点的变化率。那么偏导数是什么&#xff…

thinkphp todo

来由&#xff1a; 数据库的这个字段我想返回成&#xff1a; 新奇的写法如下&#xff1a; 逻辑层的代码&#xff1a; public function goodsDetail($goodId){$detail $this->good->where(id, $goodId)->hidden([type_params,user_id])->find();if (!$detail) {ret…

idea新建spring boot starter

什么是spring boot starter Spring Boot Starter 是一种 Maven 或 Gradle 依赖&#xff0c;它能够轻松地将相关库和框架集成到 Spring Boot 应用程序中。Starter 是一种对常见依赖项和设置的易于复用的封装&#xff0c;它们通常被开发人员用于创建可插拔的 Spring Boot 应用程序…

Java UDP 多人聊天室简易版

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…

景联文科技:高质量垂直领域数据集助力AI技术突破

随着人工智能技术的飞速发展&#xff0c;垂直领域数据集在提升模型性能、解决领域问题、推动创新应用以及提升竞争力等方面的重要性日益凸显。 提高模型性能&#xff1a;垂直领域数据集专注于特定任务或领域&#xff0c;使用这些数据集进行训练可以让模型更好地理解和解决特定领…

安防音频接口选型的高性能国产芯片分析

在人工智能兴起之后&#xff0c;安防市场就成为了其全球最大的市场&#xff0c;也是成功落地的最主要场景之一。对于安防应用而言&#xff0c;智慧摄像头、智慧交通、智慧城市等概念的不断涌现&#xff0c;对于芯片产业催生出海量需求。今天&#xff0c;我将为大家梳理GLOBALCH…

得帆云助力容百科技构建CRM系统,实现LTC全流程管理

宁波容百新能源科技股份有限公司 宁波容百新能源科技股份有限公司&#xff08;以下简称“容百科技”&#xff09;于2014年9月建立&#xff0c;是高科技新能源材料行业的跨国型集团公司。专业从事锂电池正极材料的研发、生产和销售&#xff0c;于2019年登陆上交所科创板&#x…

CV计算机视觉每日开源代码Paper with code速览-2023.12.1

点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构&#xff1a;Transformer】TransNeXt: Robust Foveal Visual Perception for Vision Transformers 论文地址&#xff1a;http…