【MyBatis】Mybatis实现分页效果

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

【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

相关新闻