ssm整合之四 分页

package com.util;

import java.util.List;

/**
类名:PageData.java
创建人: zh
修改人:
完成功能:分页返回用
*/
public class PageData{

    //列表
	private  List list;
	//行数
	private int count;

	public PageData(){
	}
	
	public <T> PageData(int count,List<T> list)
	{
		this.count=count;
		this.list=list;
	}
	public List getList() {
		return list;
	}
	public void setList(List list) {
		this.list = list;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	
	
}
package com.util;


import java.io.UnsupportedEncodingException;
import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;

public class PageUtil {
	
	private int  recordCount,pageSize,pageNo;//总数量   每页显示数量   页数
    private int pageCount=0;//总页数
	private String pageString,css="", url="";
	/**
	 * 构造方法,初始化其他参数
	 * @param pageSize
	 * @param pageNo
	 * @param recordCount
	 * @param request
	 */
	public PageUtil(int pageSize,int pageNo,int recordCount,HttpServletRequest request)
	{
		this.pageNo=pageNo;
		this.recordCount=recordCount;
		if(this.recordCount<0)
			this.recordCount=0;
		this.pageSize=pageSize;
		//链接地址
		this.url=request.getRequestURI()+"?";
		Enumeration  pNames=request.getParameterNames();  
		 while(pNames.hasMoreElements()){  
		  String  name=(String)pNames.nextElement();
		  if( name.equalsIgnoreCase("pageNo")==false )
			{
			  if(url.charAt(url.length()-1)=='?')
				  url+=name+"="+request.getParameter(name);
			  else
				  url+="&"+name+"="+request.getParameter(name);
			}
		  }
		 if(url.charAt(url.length()-1)!='?')
		 {
			 url+="&";
		 }
	}
	/**
	 * 计算拼接分页字符串
	 * @return
	 */
	public String getPageString()
	{
	
		if(recordCount%pageSize==0)
		{
			pageCount=recordCount/pageSize;
		}
		else
		{
			pageCount=recordCount/pageSize+1;
		}

		//当前页
		if(pageNo<1)
		{
			pageNo=1;
		}
		//尾页
		if(pageNo>pageCount)
		{
			pageNo=pageCount;
		}
	
		//上页和首页
		if (pageNo>1)
		{
			pageString="<a href='"+url+"pageNo=1'><font class='"+css+"'>首页</font></a> ";
			pageString+="<a href='"+url+"pageNo="+(pageNo-1)+"'><font class='"+css+"'>上页</font></a> ";
		}
		else
		{
			pageString="<font class='"+css+"'>首页</font> ";
			pageString+="<font class='"+css+"'>上页</font> ";
		}
  

		pageString+="<font color=red>"+pageNo+"</font> ";
		
		//下页和尾页
		if(pageNo<pageCount)
		{
			pageString+="<a href='"+url+"pageNo="+(pageNo+1)+"' class='"+css+"'>下页</a> ";
			pageString+="<a href='"+url+"pageNo="+pageCount+"' class='"+css+"'>尾页</a> ";
		}
		else
		{
			pageString+="<font class='"+css+"'>下页</font> ";
			pageString+="<font class='"+css+"'>尾页</font>";
		}
		//跳转页
		pageString+="  转到第<select id=pageNo onchange=\"window.location.href='"+url+"pageNo='+this.value\">";;
		for(int i=1;i<=this.pageCount;i++) {
				if( pageNo==i) {
					pageString+="<option value="+i+" selected>"+i+"</option>";
				} else {
					pageString+="<option value="+i+">"+i+"</option>";
				}
		}
			pageString+="</select>页";
			
		return "<div align=center class="+css+">共"+pageCount+"页,"+recordCount+"条记录  "+pageString+"</div>";		
	}
	public void setPageNo(int pageNo) 
	{
		this.pageNo=pageNo;
	}
	
	public void setCss(String css) 
	{
		this.css=css;
	}
	
	public void setUrl(String url) 
	{
		this.url=url;
	}
	public static void main(String[] args) {
		System.out.println("abc".charAt("abc".length()-1));
	}
}




	
	
	
Enumeration  pNames=request.getParameterNames();  
		 while(pNames.hasMoreElements()){  
		  String  name=(String)pNames.nextElement();
		  if( name.equalsIgnoreCase("pageNo")==false )
			{
			  if(url.charAt(url.length()-1)=='?')
				  url+=name+"="+request.getParameter(name);
			  else
				  url+="&"+name+"="+request.getParameter(name);
			}
		  }
		 if(url.charAt(url.length()-1)!='?')
		 {
			 url+="&";
		 }

代码的作用详细说明如下:

如果去掉上面的一段枚举解析url的代码,点击下页会回到查询全部数据的情况。

正常带查询的坟茔应该是如下状态

 

使用 SSM (Spring + Spring MVC + MyBatis) 整合框架实现分页查询, 需要以下步骤: 1. 在 MyBatis 的映射文件中编写分页查询的 SQL 语句, 例如: ``` <select id="getPage" resultType="com.example.entity.User"> SELECT * FROM t_user LIMIT #{offset}, #{limit} </select> ``` 其中 `offset` 和 `limit` 参数用于控制查询的起始位置和查询的记录数. 2. 在 MyBatis 的映射接口中编写分页查询的方法, 例如: ``` public interface UserMapper { List<User> getPage(@Param("offset") int offset, @Param("limit") int limit); } ``` 3. 在 Service 层中调用 MyBatis分页查询方法, 例如: ``` @Service public class UserService { @Autowired private UserMapper userMapper; public List<User> getPage(int pageNum, int pageSize) { int offset = (pageNum - 1) * pageSize; int limit = pageSize; return userMapper.getPage(offset, limit); } } ``` 4. 在 Controller 层中调用 Service 层的分页查询方法, 并将查询结果传递到视图, 例如: ``` @Controller public class UserController { @Autowired private UserService userService; @RequestMapping("/getPage") public String getPage(Model model, @RequestParam(value="pageNum", defaultValue="1") int pageNum, @RequestParam(value="pageSize", defaultValue="10") int pageSize) { List<User> users = userService.getPage(pageNum, pageSize); model.addAttribute("users", users); return "userList"; } } ``` 5. 在视图 (如 JSP) 中使用分页查询的结果, 例如: ``` <table> <tr> <th>ID</th> <th>用户名</th> </tr> <c:forEach items="${users}" var="user"> <tr> <td>${
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

teayear

读后有收获可以获取更多资源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值