1. 程式人生 > >java web分頁查詢初試

java web分頁查詢初試

ssh2分頁查詢初試,放著記錄學習一下。

entity:student.java:

package com.zte.entity;

/**
 * 資料持久化,跟資料庫的的相應的表的欄位是對應的。
 * 
 * 
 */
public class Student
{

	private Integer id;

	private String name;

	private Integer age;

	private Integer score;

	private String email;

	private String phone;

	public String getEmail()
	{
		return email;
	}

	public void setEmail(String email)
	{
		this.email = email;
	}

	public String getPhone()
	{
		return phone;
	}

	public void setPhone(String phone)
	{
		this.phone = phone;
	}

	public Integer getId()
	{
		return id;
	}

	public void setId(Integer id)
	{
		this.id = id;
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public Integer getAge()
	{
		return age;
	}

	public void setAge(Integer age)
	{
		this.age = age;
	}

	public Integer getScore()
	{
		return score;
	}

	public void setScore(Integer score)
	{
		this.score = score;
	}

}
Student.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="com.zte.entity">
	<class name="Student" table="student">
		<id name="id" column="id" type="java.lang.Integer">
			<generator class="identity">
			</generator>
		</id>
		<property name="name" column="name" type="java.lang.String"></property>
		<property name="age" column="age" type="java.lang.Integer"></property>
		<property name="score" column="score" type="java.lang.Integer"></property>
		<property name="email" column="email" type="java.lang.String"></property>
		<property name="phone" column="phone" type="java.lang.String"></property>
	</class>
</hibernate-mapping>

dao層:StudentDao.java
public interface StudentDao<T>
{
	public QueryResult<T> getScrollData(int firstindex, int maxresult); // 獲得分頁記錄
}

StudentDaoImpl.java:
public class StudentImpl<T> implements StudentDao
{

	private SessionFactory sessionFactory;// 通過spring注入資料持久化工廠(相當於spring幫你設定好了
											// 物件,直接通過getter/setter的方式獲取)

    public SessionFactory getSessionFactory()
    {
        return sessionFactory;
    }

    public void setSessionFactory(SessionFactory sessionFactory)
    {
        this.sessionFactory = sessionFactory;
    }
      @Override
	public QueryResult getScrollData(int firstindex, int maxresult)
	{
		QueryResult retuslt = new QueryResult<T>();
		Query query =
				sessionFactory.getCurrentSession().createQuery("from Student");
		System.out.println("query---size---before>>>" + query.list().size());
		retuslt.setTotalrecord(query.list().size());
		query.setFirstResult(firstindex).setMaxResults(maxresult);
		System.out.println("query---size---after>>>" + query.list().size());
		retuslt.setResultlist(query.list());
		return retuslt;
	}

services層:

StudentService.java:

public interface StudentService<T>
{
	public QueryResult<T> getScrollData(int firstindex, int maxresult);
}
StudentServiceImpl.java:
public class StudentServiceImpl implements StudentService
{

	private StudentDao studentDao;// 通過spring的bean依賴注入物件
    public StudentDao getStudentDao()
    {
        return studentDao;
    }

    public void setStudentDao(StudentDao studentDao)
    {
        this.studentDao = studentDao;
    }
	@Override
	public QueryResult getScrollData(int firstindex, int maxresult)
	{
		return studentDao.getScrollData(firstindex, maxresult);
	}

Action:

BaseAction.java:

public class BaseAction extends ActionSupport implements ServletRequestAware,
		ServletResponseAware
{

	public Integer page; // 當前頁資訊

	public String query; // 是否為條件查詢

	HttpServletRequest request;

	HttpServletResponse response;

	public Integer getPage()
	{// 獲得當前頁資訊
		return page = (page == null || page < 1) ? 1 : page;
	}

	public void setPage(Integer page)
	{// 設定當前頁資訊
		this.page = page;
	}

	public String getQuery()
	{// 獲得query資訊
		return query;
	}

	public void setQuery(String query)
	{// 設定query資訊
		this.query = query;
	}

	@Override
	public void setServletResponse(HttpServletResponse arg0)
	{
		this.response = arg0;

	}

	@Override
	public void setServletRequest(HttpServletRequest arg0)
	{
		this.request = arg0;

	}

QueryAction.java
public class QueryAction extends BaseAction 
{

	public StudentService studentService;

	public StudentService getStudentService()
	{
		return studentService;
	}

	public void setStudentService(StudentService studentService)
	{
		this.studentService = studentService;
	}

	public String query()
	{
		PageView<Student> pageView = new PageView<Student>(5, getPage());
		pageView.setQueryResult(studentService.getScrollData(
				pageView.getFirstResult(), pageView.getMaxresult()));// 查詢所有記錄
		request.setAttribute("pageView", pageView);// 儲存到request範圍
		return this.SUCCESS;
	}
}

Util,分頁工具類:
public class PageIndex {
	private long startindex;
	private long endindex;
	
	public PageIndex(long startindex, long endindex) {
		this.startindex = startindex;
		this.endindex = endindex;
	}
	public long getStartindex() {
		return startindex;
	}
	public void setStartindex(long startindex) {
		this.startindex = startindex;
	}
	public long getEndindex() {
		return endindex;
	}
	public void setEndindex(long endindex) {
		this.endindex = endindex;
	}
	 
	public static PageIndex getPageIndex(long viewpagecount, int currentPage, long totalpage){
			long startpage = currentPage-(viewpagecount%2==0? viewpagecount/2-1 : viewpagecount/2);
			long endpage = currentPage+viewpagecount/2;
			if(startpage<1){
				startpage = 1;
				if(totalpage>=viewpagecount) endpage = viewpagecount;
				else endpage = totalpage;
			}
			if(endpage>totalpage){
				endpage = totalpage;
				if((endpage-viewpagecount)>0) startpage = endpage-viewpagecount+1;
				else startpage = 1;
			}
			return new PageIndex(startpage, endpage);		
	}
}

PageView.java:
public class PageView<T> {
	/** 分頁資料 **/
	private List<T> records;
	/** 頁碼開始索引和結束索引 **/
	private PageIndex pageindex;
	/** 總頁數 **/
	private long totalpage = 1;
	/** 每頁顯示記錄數 **/
	private int maxresult = 12;
	/** 當前頁 **/
	private int currentpage = 1;
	/** 總記錄數 **/
	private long totalrecord;
	/** 頁碼數量 **/
	private int pagecode = 10;
	/** 要獲取記錄的開始索引 **/
	public int getFirstResult() {
		return (this.currentpage-1)*this.maxresult;
	}
	public int getPagecode() {
		return pagecode;
	}

	public void setPagecode(int pagecode) {
		this.pagecode = pagecode;
	}

	public PageView(int maxresult, int currentpage) {
		this.maxresult = maxresult;
		this.currentpage = currentpage;
	}
	
	public void setQueryResult(QueryResult<T> qr){
		setTotalrecord(qr.getTotalrecord());
		setRecords(qr.getResultlist());
	}
	
	public long getTotalrecord() {
		return totalrecord;
	}
	public void setTotalrecord(long totalrecord) {
		this.totalrecord = totalrecord;
		setTotalpage(this.totalrecord%this.maxresult==0? this.totalrecord/this.maxresult : this.totalrecord/this.maxresult+1);
	}
	public List<T> getRecords() {
		return records;
	}
	public void setRecords(List<T> records) {
		this.records = records;
	}
	public PageIndex getPageindex() {
		return pageindex;
	}
	public long getTotalpage() {
		return totalpage;
	}
	public void setTotalpage(long totalpage) {
		this.totalpage = totalpage;
		this.pageindex = PageIndex.getPageIndex(pagecode, currentpage, totalpage);
	}
	public int getMaxresult() {
		return maxresult;
	}
	public int getCurrentpage() {
		return currentpage;
	}

QueryResult.java,資料集
/**
 * 分頁實體類封裝
 *
 */
public class QueryResult<T> {
	/** 獲得結果集 **/
	private List<T> resultlist;
	/** 獲得總的記錄數 **/
	private long totalrecord;
	
	public List<T> getResultlist() {
		return resultlist;
	}
	public void setResultlist(List<T> resultlist) {
		this.resultlist = resultlist;
	}
	public long getTotalrecord() {
		return totalrecord;
	}
	public void setTotalrecord(long totalrecord) {
		this.totalrecord = totalrecord;
	}
}

分頁jsp:
<%@ page language="java" pageEncoding="GB18030"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<font color="blue"> 當前頁:第${pageView.currentpage}頁 |
	總記錄數:${pageView.totalrecord}條 | 每頁顯示:${pageView.maxresult}條 |
	總頁數:${pageView.totalpage}頁</font>
<c:forEach begin="${pageView.pageindex.startindex}"
	end="${pageView.pageindex.endindex}" var="wp">
	<c:if test="${pageView.currentpage==wp}">
		<b><font color="red">第${wp}頁</font></b>
	</c:if>
	<c:if test="${pageView.currentpage!=wp}">
		<a href="javascript:topage('${wp}')" class="a03">第${wp}頁</a>
	</c:if>
</c:forEach>

分頁的頁面:
<%@ page language="java" contentType="text/html; charset=GB18030"
	pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
	//到指定的分頁頁面
	function topage(page) {
		var form = document.forms[0];
		form.page.value = page;
		form.submit();
	}
</script>
</head>
<body>
	<form action="queryAction" method="post">
		<s:hidden name="page" />
		<s:hidden name="id" />
		<s:hidden name="name" />
		<s:hidden name="phone" />
		<s:hidden name="email" />
		<s:hidden name="age" />
		<s:hidden name="score" />
		<table width="800" border="0" cellPadding="0" cellSpacing="1"
			bgcolor="#6386d6">
			<!-- 列表標題欄 -->
			<tr bgcolor="#EFF3F7" class="TableBody1">
				<td width="10%" height="37" align="center"><b>客戶編號</b></td>
				<td width="10%" height="37" align="center"><B>客戶名稱</B></td>
				<td width="18%" height="37" align="center"><b>聯絡電話</b></td>
				<td width="18%" height="37" align="center"><b>聯絡地址</b></td>
				<td width="18%" height="37" align="center"><b>聯絡人</b></td>
				<td width="18%" height="37" align="center"><b>其他資訊</b></td>
				<td width="10%" height="37" align="center"><b>操作</b></td>
			</tr>
			<!-- 列表資料欄 -->
			<s:if
				test="null != #request.pageView.records && !#request.pageView.records.isEmpty() ">
				<s:iterator value="#request.pageView.records" id="entity">
					<tr bgcolor="#EFF3F7" class="TableBody1"
						onmouseover="this.bgColor = '#DEE7FF';"
						onmouseout="this.bgColor='#EFF3F7';">
						<td align="center" vAlign="center">${entity.id }</td>
						<td align="center" vAlign="center">${entity.name }</td>
						<td align="center" vAlign="center">${entity.phone }</td>
						<td align="center" vAlign="center">${entity.email }</td>
						<td align="center" vAlign="center">${entity.age }</td>
						<td align="center" vAlign="center">${entity.score }</td>
						<td align="center" vAlign="center"><a href="#"
							onclick="del('customermanage_del.do?customerNO=${entity.id}');">刪除</a>
							<a href="#"
							onclick="openWin('customermanage_updateUI.do?customerNO=${entity.id}','addperson',600,200);">修改</a>
						</td>
					</tr>
				</s:iterator>
			</s:if>
			<!-- 在列表資料為空的時候,要顯示的提示資訊 -->
			<s:else>
				<tr>
					<td colspan="7" align="center" bgcolor="#EFF3F7" class="TableBody1"
						onmouseover="this.bgColor = '#DEE7FF';"
						onmouseout="this.bgColor='#EFF3F7';">沒有找到相應的記錄</td>
				</tr>
			</s:else>
		</table>
		<TABLE width="778" border=0 align=left cellPadding=0 cellSpacing=0
			borderColor=#ffffff style="FONT-SIZE: 10pt">
			<TBODY>
				<TR>
					<TD height=28 align=right vAlign=center noWrap
						background="images/list_middle.jpg">   <!-- 可以在這裡插入分頁導航條 -->
						<%@ include file="fenye.jsp"%>
					</TD>
				</TR>
			</TBODY>
		</TABLE>
	</form>
</body>
</html>

效果如圖:


相關推薦

java web查詢初試

ssh2分頁查詢初試,放著記錄學習一下。 entity:student.java: package com.zte.entity; /** * 資料持久化,跟資料庫的的相應的表的欄位是對應的。 * * */ public class Student {

java redis 查詢數據

dao datalist main stat pri .class print out -c package com.liying.tiger.test; import java.util.List; import org.springframework.c

如何用java查詢頁面

分頁演算法 我們先在util中寫一個分頁的工具類,程式碼如下: package com.util; import java.util.ArrayList; public class PageModel<T> { //定義屬性表示當前頁 priva

Web - 查詢(limit).

分頁查詢: 每頁顯示10條資料. Servlet.java @WebServlet("/findByPage") public class PageServlet extends HttpServlet { protected void doPost(HttpServle

Java Web顯示實現思路

實現效果 一.需求描述 從資料庫中將所有資料查詢出來,分頁顯示在前端頁面上,每頁顯示若干條資料,並實現"首頁","上一頁","下一頁","尾頁","跳轉至指定頁碼","顯示當前頁碼"等功能   二.實現思路  我的思路是將當前頁碼的值作為引數傳給servlet

Java Web功能的實現

在開發過程中,經常做的一件事,也是最基本的事,就是從資料庫中查詢資料,然後在客戶端顯示出來。當資料少時,可以在一個頁面內顯示完成。然而,如果查詢記錄是幾百條、上千條呢?直接一個頁面顯示完全的話,表格得多長啊。。。。。。這時,我們可以用分頁技術。           這裡總

Java WEB 實現

分頁實現的效果:    &組圖0-1.分頁實現效果圖一      &組圖0-2.分頁實現效果圖二一、從效果可以看出內容由兩部分組成:1.學生資訊    資料庫中插入一些記錄,此處以學生

Java web訪問MySql資料庫查詢

有時候我們查詢資料庫表時,但是很多時候表中的記錄很多,需要顯示出來的話怎麼辦?這時可以使用分頁的方法,就是指定從資料庫表的什麼位置開始查詢顯示,以及指定顯示的記錄數目。 Mysql資料庫提供了limit a,b的關鍵字,a是資料庫表的查詢起始位置,是個偏移量,b是指定本次查

Java鏈接HBASE數據庫,創建一個表,刪除一張表,修改表,輸出插入,修改,數據刪除,數據獲取,顯示表信息,過濾查詢查詢,地理hash

can charat nfa true 目錄結構 dfa byte sin extra 準備工作 1、創建Java的Maven項目 創建好的目錄結構如下: 另外註意junit的版本,最好不要太高,最開始筆者使用的junit4.12的,發現運行的時候會報錯。最後把Junit

Java查詢--顯示

limit href agen dex lec return 出現 初始化 public   當數據庫中數據條數過多時,一個頁面就不能顯示,這是要設置分頁查詢,首先要使用的是數據庫sql語句的limit條件實現分組查詢sql語句大概形式為:   select * from

億級別記錄的mongodb查詢java程式碼實現

1.準備環境   1.1 mongodb下載   1.2 mongodb啟動      C:\mongodb\bin\mongod --dbpath D:\mongodb\data   1.3 視覺化mongo工具Robo 3T下載 2.準備資料    <d

java datatable 前端 查詢條件解決中文亂碼

首先 專案中引用前端分頁js   jquery.linq.min.js  百度下載 前端分頁程式碼片段 表設定 var uploadUnsuccessfulDataColumns = [ { "title": "序

java.util.List介面的方法subList()進行查詢

java.util.List中有一個subList方法,用來返回一個list的一部分的檢視。   List<E> subList(int fromIndex, int toIndex);把list進行分頁,其中以pagesize為每頁資料的個數,然後從第一頁開始依次輸出每頁的資料直至

java.util.List接口的方法subList()進行查詢

total params rom main fun string 其中 key public java.util.List中有一個subList方法,用來返回一個list的一部分的視圖。 List<E> subList(int fromIndex, int

java簡單實現查詢

PreparedStatement 使用PreparedStatement可以較為簡單地實現分頁,涉及到三個函式 1.PreparedStatement.setMaxRows(int)這個函式設定一個當前的preparedStatement能取得的行的最大值,例如setMaxRows(

java mongodb Criteria多個條件動態組合查詢

在做mongodb的時候想根據多個條件動態組合查詢相關資料網上沒有找到合適的資料,參考了一些例項可是查詢出來條件不起作用,然後就自己琢磨出這樣的程式碼,記錄一下! /** * 按照多條件搜尋問題 * 分頁 */ public List&

Java操作MongoDB模糊查詢查詢

模糊查詢條件:1、完全匹配Pattern pattern = Pattern.compile("^name$", Pattern.CASE_INSENSITIVE);2、右匹配Pattern pattern = Pattern.compile("^.*name$", P

mongodb java增刪該查和模糊、排序和查詢

package mongodb; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.regex.Pattern; import com.mong

java查詢(oracle)dao樣例

/** * 根據使用者ID和時間範圍查詢條件得到相關記錄 * @author Bimy * @created 2015年6月23日 * @lastModified * @param empCode 員工ID * @param begi

資料倉庫(十四)--java--presto---hive的查詢

我們在SpringMVC框架中使用那個presto查詢hive的資料做展示時,發現在table裡分頁是個不可避免的話題。 建議去掉count 但是尷尬的是 對於海量資料 count的效率是很低的,因為在不加條件的情況下基本上要掃描全表。 count操作效能