mybatis的分页插件

 在mybatis核心配置文件中:

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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的数据封装//进行有条件的查询操作,必须要创建ProductInfoExampleProductInfoExample 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;<fontstyle="color:orange;">${info.pages}</font>&nbsp;&nbsp;&nbsp;页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<c:if test="${info.pageNum!=0}">当前&nbsp;&nbsp;&nbsp;<fontstyle="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;<fontstyle="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.mzph.cn/news/203436.shtml

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

相关文章

Zabbix自定义飞书webhook告警媒介2

说明:适用于7.0及以上版本,低版本可能会有问题。 参数如下: 名称 值EVENT.DURATION{EVENT.DURATION}EVENTDATE

当使用RSA加密,从手机前端到服务器后端的请求数据存在+

将转成了空格&#xff0c;导致解密出错 将空格转成了

Unity中Batching优化的GPU实例化(1)

文章目录 前言一、GPU实例化的规则1、必须满足 Mesh 网格一样2、只有OpenGL es 3.0及以上才支持&#xff08;3.0及以上有部分硬件可能也不支持&#xff09; 二、GPU实例化的应用场景1、公开几个成员属性&#xff0c;用于存放可以调整的数据2、用Random.insideUnitCircle随机生成…

AWS re:Invent 2023-亚马逊云科技全球年度技术盛会

一:会议地址 2023 re:Invent 全球大会主题演讲 - 亚马逊云科技从基础设施和人工智能/机器学习创新,到云计算领域的最新趋势与突破,倾听亚马逊云科技领导者谈论他们最关心的方面。https://webinar.amazoncloud.cn/reInvent2023/keynotes.html北京时间2023年12月1日00:30-02:…

VSCode之C++ CUDA入门:reduce的N+1重境界

背景 Reduce是几乎所有多线程技术的基础和关键&#xff0c;同样也是诸如深度学习等领域的核心&#xff0c;简单如卷积运算&#xff0c;复杂如梯度聚合、分布式训练等&#xff0c;了解CUDA实现reduce&#xff0c;以及优化reduce是理解CUDA软硬件连接点的很好切入点。 硬件环境&…

HarmonyOS4.0从零开始的开发教程03初识ArkTS开发语言(中)

HarmonyOS&#xff08;二&#xff09;初识ArkTS开发语言&#xff08;中&#xff09;之TypeScript入门 浅析ArkTS的起源和演进 1 引言 Mozilla创造了JS&#xff0c;Microsoft创建了TS&#xff0c;Huawei进一步推出了ArkTS。 从最初的基础的逻辑交互能力&#xff0c;到具备类…

http和https的区别有哪些

目录 HTTP&#xff08;HyperText Transfer Protocol&#xff09; HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09; 区别与优势 应用场景 未来趋势 当我们浏览互联网时&#xff0c;我们经常听到两个常用的协议&#xff1a;HTTP&#xff08;HyperText Tra…

Excel 动态拼接表头实现导出

public class Column {//单元格内容private String content;//字段名称&#xff0c;用户导出表格时反射调用private String fieldName;//这个单元格的集合private List<Column> listTpamscolumn new ArrayList<Column>();int totalRow;int totalCol;int row;//exc…

易宝OA 两处任意文件上传漏洞复现

0x01 产品简介 易宝OA系统是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台,具有信息管理、 流程管理 、知识管理(档案和业务管理)、协同办公等多种功能。 0x02 漏洞概述 易宝OA系统UploadFile、BasicService.asmx等接口处存在文件上传漏洞,未授权的攻击者可…

记录 | vscode pyhton c++调试launch.json配置

下面提供 vscode 中 python 和 c 调试配置的 launch.json (好用&#xff0c;已用好几年&#xff0c;建议收藏) {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息&#xff0c;请访问: https://go.microsoft.com/fwlink/?linkid830387&qu…

【Spring】依赖注入之属性注入详解

前言&#xff1a; 我们在进行web开发时&#xff0c;基本上一个接口对应一个实现类&#xff0c;比如IOrderService接口对应一个OrderServiceImpl实现类&#xff0c;给OrderServiceImpl标注Service注解后&#xff0c;Spring在启动时就会将其注册成bean进行统一管理。在Co…

WireShark监控浏览器登录过程网络请求

软件开发中经常前后端扯皮。一种是用Chrome浏览器的开发者工具 来看网络交互&#xff0c;但是前提是 网络端口的确是通的。 WireShark工作在更低层。 这个工具最大的好处&#xff0c;大家别扯皮&#xff0c;看网络底层的log&#xff0c;到底 你的端口开没开&#xff0c; 数据…

计算机图形图像技术(OpenCV核心功能、图像变换与图像平滑处理)

一、实验原理&#xff1a; 1、显示图像 void imshow(const string &name, InputArray image); ①功能&#xff1a;在指定窗口中显示图像。 ②参数&#xff1a;name为窗口的名字&#xff1b;image为待显示的图像。 ③说明&#xff1a;可显示彩色或灰度的字节图像和浮点数图…

Threejs项目实战之一:汽车外观换肤效果三维展示

目录 最终效果1 创建项目2 安装插件3 编写代码3.1 准备工作3.2 代码编写3.2.1 在template标签中构建html页面3.2.2 在style标签中构建页面样式文件3.2.3 在script标签中编写js代码 最终效果 先看下最终实现的效果 接下来&#xff0c;我们就从创建项目开始&#xff0c;一步一步…

自主并不等于智能

自主不等于智能&#xff0c;也不是自动化的简单升级。自主性和智能性是两个不同的概念。自主性指物体或系统具有独立决策和行动的能力&#xff0c;不需要人为干预。而智能性指物体或系统具有类似人类的智慧、学习和适应能力。 虽然自主性通常与智能性相关&#xff0c;但并非所有…

李宏毅bert记录

一、自监督学习&#xff08;Self-supervised Learning&#xff09; 在监督学习中&#xff0c;模型的输入为x&#xff0c;若期望输出是y&#xff0c;则在训练的时候需要给模型的期望输出y以判断其误差——有输入和输出标签才能训练监督学习的模型。 自监督学习在没有标注的训练…

【后端】JVM 远程调试

前言 再好的代码,也还是有瑕疵的,不是代码不给力,是线上问题太牛逼太玄幻。这不刚部署就出现了问题,幸好还是测试的时候,早点发现早点解决,不给任何人带来不必要的损失,是我做人的原则,只要钱到位,任何问题都不是问题。 JVM 远程调试 不得不说 IDEA 和 宝塔配合是真…

工厂方法设计模式项目实践

前言 以采集数据处理逻辑为例&#xff0c;数据采集分为不同种类如&#xff1a;MQTT、MODBUS、HTTP等&#xff0c;不同的采集数据有不同的解析处理逻辑。但总体解析处理步骤是固定的。可以使用工厂方法设计模式简化代码&#xff0c;让代码变得更加优雅。 代码实战 抽象类 总体…

gpt3、gpt2与gpt1区别

参考&#xff1a;深度学习&#xff1a;GPT1、GPT2、GPT-3_HanZee的博客-CSDN博客 Zero-shot Learning / One-shot Learning-CSDN博客 Zero-shot&#xff08;零次学习&#xff09;简介-CSDN博客 GPT-2 模型由多层单向transformer的解码器部分构成&#xff0c;本质上是自回归模型…

10_企业架构NOSQL数据库之MongoDB

企业架构NOSQL数据库之MongoDB 学习目标和内容 1、能够简单描述MongoDB的使用特点 2、能够安装配置启动MongoDB 3、能够使用命令行客户端简单操作MongoDB 4、能够实现基本的数据操作 5、能够实现MongoDB基本安全设置 6、能够操作安装php的MongoDB扩展 一、背景描述及其方案设计…