數據庫分頁顯示

單獨使用mybatis 實現 數據庫分頁顯示

實現圖:

基本就是這麼顯示  點擊下一頁就直接跳轉到下一頁。

首先是:配置mybatis  (配置流程)

導入jsp所需要的jar包jstl.jar 和 standard.jar (下載參考)

紅框裏表示在mybatis上添加的包和類

1.page.java 

package com.ssm.pojo;

import java.util.List;

public class page {
	//每頁個數
	private int pagesize;
	//當前第幾頁
	private int pagenumber;
	//總數
	private long total;
	//當前頁信息
	private List<?> list;
	public int getPagesize() {
		return pagesize;
	}
	public void setPagesize(int pagesize) {
		this.pagesize = pagesize;
	}
	public int getPagenumber() {
		return pagenumber;
	}
	public void setPagenumber(int pagenumber) {
		this.pagenumber = pagenumber;
	}
	public long getTotal() {
		return total;
	}
	public void setTotal(long total) {
		this.total = total;
	}
	public List<?> getList() {
		return list;
	}
	public void setList(List<?> list) {
		this.list = list;
	}
	
	
}

2.PeopleService.java

package com.ssm.service;

import java.io.IOException;

import com.ssm.pojo.page;

public interface PeopleService {
	/**
	 * 顯示頁面
	 * @return
	 * @throws IOException 
	 */
	page showPage(int pagesize,int pagenumber)throws IOException;
}

3.PeopleServiceImpl.java

package com.ssm.service.impl;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
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 com.ssm.pojo.page;
import com.ssm.service.PeopleService;

public class PeopleServiceImpl implements PeopleService{
	
	@Override
	public page showPage(int pagesize,int pagenumber) throws IOException {
		InputStream is = Resources.getResourceAsStream("sqlconfig.xml");
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		SqlSession session = factory.openSession();
		
		page p = new page(); 
		p.setPagenumber(pagenumber);
		p.setPagesize(pagesize);
		Map<String, Object> map = new HashMap<>();
		map.put("pageStart", pagesize*(pagenumber-1));
		map.put("pageSize", pagesize);
		p.setList(session.selectList("com.ssm.mapper.PeopleMapper.selAll",map));
		//總條數
		long count = session.selectOne("com.ssm.mapper.PeopleMapper.selCount");
		p.setTotal(count%pagesize == 0 ? count/pagesize : count/pagesize+1);
		return p;
	}
}

4.ShowServlet.java

package com.ssm.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 com.ssm.pojo.page;
import com.ssm.service.PeopleService;
import com.ssm.service.impl.PeopleServiceImpl;
//大部分註解都有默認屬性,如果註解中只給默認屬性賦值,可以省略屬性名
//否則在註解的(屬性名=屬性值)格式
//如果一個屬性是數組類型格式:屬性名={值,值},如果該數組只有一個值,可以省略大括號
//如果類不是一個基本類型或者String而是一個類類型,語法:屬性名=@類型
//註解中@表示引用註解聲明
@WebServlet("/page")
public class ShowServlet extends HttpServlet{
	private PeopleService PeopleService = new PeopleServiceImpl();
	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
			throws ServletException, IOException {
		String pagesizeString = arg0.getParameter("pagesize");
		int pagesize = 2;
		if(pagesizeString != null && pagesizeString != ""){
			pagesize = Integer.parseInt(pagesizeString);
		}
		String pagenumberString = arg0.getParameter("pagenumber");
		int pagenumber = 1;
		if(pagenumberString != null && pagenumberString != ""){
			pagenumber = Integer.parseInt(pagenumberString);
		}
		page p = PeopleService.showPage(pagesize, pagenumber);
		
		arg0.setAttribute("page", p);
		arg0.getRequestDispatcher("index.jsp").forward(arg0, arg1);
 	}

}

5.index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 一旦需要使用循環遍歷,則添加 如:<c:forEach> -->
<%@ 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="${page.list}" var="p">
			<tr>
				<td>${p.id}</td>
				<td>${p.name}</td>
				<td>${p.age}</td>			
			</tr>
		</c:forEach>
	</table>
	<a href="page?pagenumber=${page.pagenumber-1}&pagesize=${page.pagesize}" <c:if test="${page.pagenumber<=1}"> οnclick="javascript:return false;" </c:if> >上一頁</a>
	<a href="page?pagenumber=${page.pagenumber+1}&pagesize=${page.pagesize}" <c:if test="${page.pagenumber>=page.total}"> οnclick="javascript:return false;" </c:if> >下一頁</a>
</body>
</html>

6.mapper.xml中SQL語句

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ssm.mapper.PeopleMapper">
 	<select id="selAll" resultType="people" parameterType="map">
 		select * from people limit #{pageStart},#{pageSize}
 	</select>
 	<select id="selCount" resultType="long">
		select count(*) from people 	
 	</select>
 </mapper>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章