【MyBatis】Mybatis实现分页效果
生活随笔
收集整理的這篇文章主要介紹了
【MyBatis】Mybatis实现分页效果
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
源代碼:GitHub鏈接
環(huán)境:
- Eclipse項目
- web 3.0
- Tomcat 8.5
用到的技術(shù):
- MyBatis
- Log4J
- JSTL
- 基本的…Java Servlet,JSP,…
使用方式:
- 直接運行ShowServlet.java(選擇Run on server),即可在網(wǎng)頁中看到分頁效果,如下
項目結(jié)構(gòu)
主要源代碼(全部源碼在github鏈接)
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body><table border="1"><tr><th>編號</th><th>姓名</th><th>年齡</th></tr><c:forEach items="${PageInfo.dataList }" var="pi"><tr><td>${pi.id }</td><td>${pi.name }</td><td>${pi.age }</td></tr></c:forEach></table><a href="ShowServlet?pageNum=${PageInfo.pageNum-1 }&pageSize=${PageInfo.pageSize}" <c:if test="${PageInfo.pageNum<=1 }"> οnclick="javascript:return false;" </c:if> >上一頁</a><a href="ShowServlet?pageNum=${PageInfo.pageNum+1 }&pageSize=${PageInfo.pageSize}" <c:if test="${PageInfo.pageNum>=PageInfo.total }"> οnclick="javascript:return false;" </c:if> >下一頁</a> </body> </html>ShowServlet.java
package cn.hanquan.servlet;import java.io.IOException;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import cn.hanquan.pojo.PageInfo; import cn.hanquan.service.PeopleService; import cn.hanquan.service.impl.PeopleServiceImpl;/*** 分頁顯示People信息* * @author Buuug**/ @WebServlet("/ShowServlet") public class ShowServlet extends HttpServlet {private PeopleService peopleService = new PeopleServiceImpl();@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 第一次訪問的驗證,如果沒有傳遞參數(shù),設(shè)置默認值String pageSizeStr = req.getParameter("pageSize");int pageSize = 2;if (pageSizeStr != null && !pageSizeStr.equals("")) {pageSize = Integer.parseInt(pageSizeStr);}String pageNumberStr = req.getParameter("pageNum");int pageNum = 1;if (pageNumberStr != null && !pageNumberStr.equals("")) {pageNum = Integer.parseInt(pageNumberStr);}PageInfo pi = peopleService.showPage(pageSize, pageNum);System.out.println(pi.getDataList());req.setAttribute("PageInfo", pi);req.getRequestDispatcher("index.jsp").forward(req, resp);} }PeopleServiceImpl.java
package cn.hanquan.service.impl;import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.apache.log4j.Logger;import cn.hanquan.pojo.PageInfo; import cn.hanquan.pojo.People; import cn.hanquan.service.PeopleService;/*** 在數(shù)據(jù)訪問層、控制器中處理異常,在service中只拋出異常* * @author Buuug**/ public class PeopleServiceImpl implements PeopleService {Logger logger = Logger.getLogger(PeopleServiceImpl.class);@Overridepublic PageInfo showPage(int pageSize, int pageNum) throws IOException {InputStream is = Resources.getResourceAsStream("mybatis.xml");SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);SqlSession session = factory.openSession();PageInfo pi = new PageInfo();pi.setPageNum(pageNum);pi.setPageSize(pageSize);// 查詢結(jié)果Map<String, Object> map = new HashMap<>();map.put("pageStart", pageSize * (pageNum - 1));map.put("pageSize", pageSize);List<People> list = session.selectList("cn.hanquan.mapper.PeopleMapper.selByPage", map);pi.setDataList(list);logger.debug(list);// 總頁數(shù)int count = session.selectOne("cn.hanquan.mapper.PeopleMapper.selCount");pi.setTotal((count % pageSize == 0 ? count / pageSize : count / pageSize + 1));logger.debug("總?cè)藬?shù):"+pi.getTotal());return pi;} }mybatis.xml
<?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><settings><setting name="logImpl" value="LOG4J"/></settings><!-- 給類起別名 --><typeAliases><package name="cn.hanquan.pojo"/></typeAliases><environments default="default"><environment id="default"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/people?serverTimezone=UTC"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><mappers><mapper resource="cn/hanquan/mapper/PeopleMapper.xml"/></mappers> </configuration>PeopleMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 填寫實例化的包名+類名,在java代碼中調(diào)用語句的時候使用 --> <mapper namespace="cn.hanquan.mapper.PeopleMapper"><!-- limit分頁查詢 --> <select id="selByPage" resultType="People" parameterType="map">select * from people limit #{pageStart}, #{pageSize}</select><!-- 查詢總數(shù) --><select id="selCount" resultType="int">select count(*) from people</select></mapper>總結(jié)
以上是生活随笔為你收集整理的【MyBatis】Mybatis实现分页效果的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【MyBatis】MyBatis对Log
- 下一篇: 【计算机系统结构】第一周 课上笔记