【MyBatis】Mybatis实现分页效果

发布时间:2026/7/28 19:18:00

【MyBatis】Mybatis实现分页效果
源代码GitHub链接环境Eclipse项目web 3.0Tomcat 8.5用到的技术MyBatisLog4JJSTL基本的…Java Servlet,JSP,…使用方式直接运行ShowServlet.java(选择Run on server)即可在网页中看到分页效果如下项目结构主要源代码全部源码在github链接index.jsp% page languagejava contentTypetext/html; charsetUTF-8 pageEncodingUTF-8% % taglib prefixc urihttp://java.sun.com/jsp/jstl/core %!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtdhtmlheadmetahttp-equivContent-Typecontenttext/html; charsetUTF-8titleInsert title here/title/headbodytableborder1trth编号/thth姓名/thth年龄/th/trc:forEachitems${PageInfo.dataList }varpitrtd${pi.id }/tdtd${pi.name }/tdtd${pi.age }/td/tr/c:forEach/tableahrefShowServlet?pageNum${PageInfo.pageNum-1 }pageSize${PageInfo.pageSize}c:iftest${PageInfo.pageNum1 }οnclickjavascript:return false;/c:if上一页/aahrefShowServlet?pageNum${PageInfo.pageNum1 }pageSize${PageInfo.pageSize}c:iftest${PageInfo.pageNumPageInfo.total }οnclickjavascript:return false;/c:if下一页/a/body/htmlShowServlet.javapackagecn.hanquan.servlet;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcn.hanquan.pojo.PageInfo;importcn.hanquan.service.PeopleService;importcn.hanquan.service.impl.PeopleServiceImpl;/** * 分页显示People信息 * * author Buuug * */WebServlet(/ShowServlet)publicclassShowServletextendsHttpServlet{privatePeopleService peopleServicenewPeopleServiceImpl();Overrideprotectedvoidservice(HttpServletRequest req,HttpServletResponse resp)throwsServletException,IOException{// 第一次访问的验证,如果没有传递参数,设置默认值String pageSizeStrreq.getParameter(pageSize);intpageSize2;if(pageSizeStr!null!pageSizeStr.equals()){pageSizeInteger.parseInt(pageSizeStr);}String pageNumberStrreq.getParameter(pageNum);intpageNum1;if(pageNumberStr!null!pageNumberStr.equals()){pageNumInteger.parseInt(pageNumberStr);}PageInfo pipeopleService.showPage(pageSize,pageNum);System.out.println(pi.getDataList());req.setAttribute(PageInfo,pi);req.getRequestDispatcher(index.jsp).forward(req,resp);}}PeopleServiceImpl.javapackagecn.hanquan.service.impl;importjava.io.IOException;importjava.io.InputStream;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.apache.log4j.Logger;importcn.hanquan.pojo.PageInfo;importcn.hanquan.pojo.People;importcn.hanquan.service.PeopleService;/** * 在数据访问层、控制器中处理异常在service中只抛出异常 * * author Buuug * */publicclassPeopleServiceImplimplementsPeopleService{Logger loggerLogger.getLogger(PeopleServiceImpl.class);OverridepublicPageInfoshowPage(intpageSize,intpageNum)throwsIOException{InputStream isResources.getResourceAsStream(mybatis.xml);SqlSessionFactory factorynewSqlSessionFactoryBuilder().build(is);SqlSession sessionfactory.openSession();PageInfo pinewPageInfo();pi.setPageNum(pageNum);pi.setPageSize(pageSize);// 查询结果MapString,ObjectmapnewHashMap();map.put(pageStart,pageSize*(pageNum-1));map.put(pageSize,pageSize);ListPeoplelistsession.selectList(cn.hanquan.mapper.PeopleMapper.selByPage,map);pi.setDataList(list);logger.debug(list);// 总页数intcountsession.selectOne(cn.hanquan.mapper.PeopleMapper.selCount);pi.setTotal((count%pageSize0?count/pageSize:count/pageSize1));logger.debug(总人数pi.getTotal());returnpi;}}mybatis.xml?xml version1.0 encodingUTF-8?!DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtdconfigurationsettingssettingnamelogImplvalueLOG4J//settings!-- 给类起别名 --typeAliasespackagenamecn.hanquan.pojo//typeAliasesenvironmentsdefaultdefaultenvironmentiddefaulttransactionManagertypeJDBC/transactionManagerdataSourcetypePOOLEDpropertynamedrivervaluecom.mysql.cj.jdbc.Driver/propertynameurlvaluejdbc:mysql://localhost:3306/people?serverTimezoneUTC/propertynameusernamevalueroot/propertynamepasswordvalue123456//dataSource/environment/environmentsmappersmapperresourcecn/hanquan/mapper/PeopleMapper.xml//mappers/configurationPeopleMapper.xml?xml version1.0 encodingUTF-8?!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd!-- 填写实例化的包名类名在java代码中调用语句的时候使用 --mappernamespacecn.hanquan.mapper.PeopleMapper!-- limit分页查询 --selectidselByPageresultTypePeopleparameterTypemapselect * from people limit #{pageStart}, #{pageSize}/select!-- 查询总数 --selectidselCountresultTypeintselect count(*) from people/select/mapper

相关新闻

GBase 8s数据库新存储引擎核心能力介绍之二

GBase 8s数据库新存储引擎核心能力介绍之二

2026/7/28 19:08:00

南大通用GBase 8s数据库(gbase database)新一代存储引擎,围绕用户生产场景持续进化,以底层架构的全面革新,为企业级用户带来真正面向生产环境的数据管理体验。二、全局时间戳一致性:读写分离场景下的数据准…

工业安全双重预防系统:风险管控与隐患排查的数字化融合

工业安全双重预防系统:风险管控与隐患排查的数字化融合

2026/7/28 19:08:00

1. 项目背景与核心价值 在工业安全生产领域,风险管理一直是企业运营的重中之重。传统安全管理模式往往将风险分级管控和隐患排查治理割裂开来,导致两个体系各自为政、数据孤岛严重。这种割裂不仅造成资源浪费,更使得安全隐患难以及时发现和闭…

基于PSD的路面不平度建模技术与工程实践

基于PSD的路面不平度建模技术与工程实践

2026/7/28 19:08:00

1. 项目概述:路面不平度建模的核心价值 在车辆动力学仿真领域,路面不平度建模直接影响着悬架系统设计、乘坐舒适性评估和耐久性分析的准确性。传统方法往往采用简化的随机激励信号,而基于功率谱密度(PSD)的模块化建模方…

C++ 中 struct 与 union 的区别:从内存共享到底层优化

C++ 中 struct 与 union 的区别:从内存共享到底层优化

2026/7/28 19:58:02

C 中 struct 与 union 的区别:从内存共享到底层优化一、引言:看似相似的两种聚合类型struct 和 union 是 C 中两种可以包含多个成员的复合类型。它们都能容纳不同类型的数据,但在内存使用方式上有着本质差异。struct 是我们日常编程中最常用的…

解决无法将“babel”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

解决无法将“babel”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

2026/7/28 19:58:02

最近在做node.js 前端的时候,遇到一个问题,全局安装了Babel,Babel提供babel-cli工具,用于命令行转码 但在查看是否安装成功,输入:babel --version 命令报错: 无法将“babel”项识别为 cmdlet、函…

热搜上的“全款买房”潮,正在重塑深圳光明的价值逻辑

热搜上的“全款买房”潮,正在重塑深圳光明的价值逻辑

2026/7/28 19:58:02

最近,“全款买房的人在变多”冲上热搜。据深圳贝壳研究院监测,2026年上半年深圳二手房全款买家成交占比已达25.3%,相当于每四个二手房买家当中,就有一个选择一次性付清。这放在十年前几乎不可想象。“能贷七成绝不贷五成”“房贷是…

Opus 5模型在Conductor平台的高性价比AI应用实践指南

Opus 5模型在Conductor平台的高性价比AI应用实践指南

2026/7/28 19:58:02

在AI模型快速迭代的今天,开发者和技术团队常常面临一个现实难题:如何在有限的预算内获得接近顶级模型的性能表现?近期,Opus 5模型正式登陆Conductor平台,以其接近Fable模型的性能表现和仅一半的价格优势,为…

图像操作中的上采样、下采样,过采样、欠采样等

图像操作中的上采样、下采样,过采样、欠采样等

2026/7/28 19:58:02

9## 介绍 提前声明一点,过采样和欠采样是针对一组图像数据集来说的,而上采样和下采样是对与单张图片来说的。 1.过采样和前采样: 欠采样(undersampling):当数据不平衡的时,比如样本标签1有1000…

MATLAB在电力系统动态分析与仿真中的应用实践

MATLAB在电力系统动态分析与仿真中的应用实践

2026/7/28 19:48:02

1. 电力系统动态分析的核心价值 电力系统动态分析是确保电网安全稳定运行的关键技术手段。当我在某省级电网调度中心第一次接触到实际故障录波数据时,才真正理解这项技术的工程意义——2018年的一次区域性振荡事故导致7座220kV变电站失压,而事故前的动态…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/28 13:30:18

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/28 16:04:36

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/28 16:04:35

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

零基础搭建桌面智能体,OpenClaw 2.7.9 分步实操,避开绝大多数部署陷阱

零基础搭建桌面智能体,OpenClaw 2.7.9 分步实操,避开绝大多数部署陷阱

2026/7/28 0:06:55

📌 一、工具核心优势盘点 数据本地存储,安全系数高所有操作日志、文档资料均保存在本机,不会上传至云端,能够有效保护企业文件与个人隐私,规避数据泄露风险。 上手简单,零编程门槛采用全图形化可视化界面&…

计算机毕业设计之基于springboot的购物平台设计与实现

计算机毕业设计之基于springboot的购物平台设计与实现

2026/7/28 0:06:55

由于移动应用技术的持续性的快速发展,现实生活中人们大多数都是通过移动手机、电脑等智能设备来完成生活中的事务。因此,许多的人工传统行业也开始与互联网结合,不再一味的依靠人工手动,努力打造半自动数字化甚至是全自动数字化模…

豆包AI绘图提示词失效真相:NLP模型层token截断机制首次披露,3招绕过字数限制

豆包AI绘图提示词失效真相:NLP模型层token截断机制首次披露,3招绕过字数限制

2026/7/28 0:06:55

更多请点击: https://codechina.net 第一章:豆包AI绘图提示词失效现象全景扫描 近期大量用户反馈,豆包(Doubao)AI绘图功能对常规提示词(Prompt)响应异常:语义明确的指令被忽略、中英…