SpringMVC3.0+MyIbatis3.0(分页示例)

阅读更多
参考资料
1 ibatis2.x与mybatis(ibatis3.x)的比较
http://zhaohe162.blog.163.com/blog/static/382167972011111114742371/
2 MyBatis学习 之 三、动态SQL语句
http://limingnihao.iteye.com/blog/782190
主要使用Oracle的三层sql实现分页!
一 环境:XP3+Oracle10g+MyEclipse6+(Tomcat)+JDK1.5
二 工程相关图片:
1 DEMO图片
SpringMVC3.0+MyIbatis3.0(分页示例)_第1张图片
2 工程代码图片
SpringMVC3.0+MyIbatis3.0(分页示例)_第2张图片
3 相关jar包图片
SpringMVC3.0+MyIbatis3.0(分页示例)_第3张图片
三 此示例是在:
SSI:SpringMVC3+Mybatis3(登录及CRUD操作)基础上加的分页功能:
http://liuzidong.iteye.com/blog/1051760
四 主要代码文件
1 BaseController.java用于子类调用方便
package com.liuzd.ssm.web;

import javax.servlet.http.HttpServletRequest;

import com.liuzd.page.Page;
import com.liuzd.page.PageState;
import com.liuzd.page.PageUtil;

/**   
 *Title:     
 *Description:     
 *Copyright: Copyright (c) 2011   
 *Company:http://liuzidong.iteye.com/    
 *Makedate:2011-5-23 下午03:31:03   
 * @author liuzidong   
 * @version 1.0   
 * @since 1.0    
 *   
 */
public class BaseController {
	
	/**
	 * oracel的三层分页语句	
	 * 子类在展现数据前,进行分页计算!	
	 * @param totalCount 根据查询SQL获取的总条数
	 * @param columnNameDescOrAsc 列名+排序方式 : ID DESC or ASC
	 */
	protected Page executePage(HttpServletRequest request,Long totalCount){
		if(null == totalCount){
			totalCount = 0L;
		}
		/**页面状态,这个状态是分页自带的,与业务无关*/
		String pageAction = request.getParameter("pageAction");
		String value = request.getParameter("pageKey");
		
		/**获取下标判断分页状态*/
		int index = PageState.getOrdinal(pageAction);				
		
		Page page = null;		
		/**
		 * index < 1 只有二种状态
		 * 1 当首次调用时,分页状态类中没有值为 NULL 返回 -1
		 * 2 当页面设置每页显示多少条: index=0,当每页显示多少条时,分页类要重新计算
		 * */
		Page sessionPage = getPage(request);
		
		if(index < 1){			
			page = PageUtil.inintPage(totalCount,index,value,sessionPage);
		}else{				
			page = PageUtil.execPage(index,value,sessionPage);
		}		
		setSession(request,page);	
		return page;
	}	
	
	private Page getPage(HttpServletRequest request) {
		Page page = (Page)request.getSession().getAttribute(PageUtil.SESSION_PAGE_KEY);
		if(page == null){
			page = new Page();
		}
		return page;		
	}	
	
	private void setSession(HttpServletRequest request,Page page) {
		request.getSession().setAttribute(PageUtil.SESSION_PAGE_KEY,page);		
	}	

}

2 UserController.java

package com.liuzd.ssm.web;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import com.liuzd.page.Page;
import com.liuzd.ssm.entity.User;
import com.liuzd.ssm.service.UserService;

@Controller
@RequestMapping("/user")
@SessionAttributes("userList")
public class UserController extends BaseController{
	
	private UserService userService;
	

	public UserService getUserService() {
		return userService;
	}
	
	@Resource
	public void setUserService(UserService userService) {
		this.userService = userService;
	}	

	
	@RequestMapping("/userList")
	public ModelAndView userList(HttpServletRequest request){
		Map params = new HashMap();
		//添加查询条件
		// ... params.put("name","jack");...
		
		//获取总条数
		Long totalCount = this.getUserService().pageCounts(params);
		//设置分页对象
		Page page = executePage(request,totalCount);		
		//如排序
		if(page.isSort()){
			params.put("orderName",page.getSortName());	
			params.put("descAsc",page.getSortState());
		}else{
			//没有进行排序,默认排序方式
			params.put("orderName","age");	
			params.put("descAsc","asc");
		}
		//压入查询参数:开始条数与结束条灵敏
		params.put("startIndex", page.getBeginIndex());
		params.put("endIndex", page.getEndinIndex());
		
		ModelAndView mv = new ModelAndView();		
		//查询集合		
		List users = this.getUserService().pageList(params);
		mv.addObject("userList",users);				
		mv.setViewName("userList");			
		return mv;
	}
}	

3 UserMapper.java
package com.liuzd.ssm.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.RowBounds;

import com.liuzd.ssm.entity.User;

public interface UserMapper{
	
	// .....	
	public List pageList(Map params);
	//分页总条数
	public Long pageCounts(Map p);
	
}


4 UserMapper.xml


  	

   
   	 
   	 
   	 
   	 
   	 
   	    	 
     
      

 



5 userList.jsp
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>


  
    <%@ include file="/common/meta.jsp"%>
    
  
      
					
										
				
姓名${page.sortName eq "name" ? page.sortInfo : page.defaultInfo} 年龄${page.sortName eq "age" ? page.sortInfo : page.defaultInfo} 性别${page.sortName eq "sex" ? page.sortInfo : page.defaultInfo} 地址${page.sortName eq "address" ? page.sortInfo : page.defaultInfo} 操作
${user.name} ${user.age} ${user.sex eq 1 ? "男" : user.sex eq 2 ? "女" : "未知"} ${user.address} 添加 | 编辑 | 删除

返回

6 page.jsp,此页面你不用关心,只管引用就行了
<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>






	
		共${page.totalCount}条记录 共${page.totalPage}页 每页显示${page.everyPage}条
		当前第${page.currentPage}页 
		
			
 			    <<首页 <上页 
 			
			
				<<首页  
				<上一页
			
		
		 || 
		
			
 			     下页> 尾页>>
 			
			
				下一页>  
				末页>>
			
		
		 
		
		 
		每页显示:
	


  • ssi-lib.7z (7.8 MB)
  • 下载次数: 1999
  • SpringMVC3.0+MyIbatis3.0(分页示例)_第4张图片
  • 大小: 25.2 KB
  • SpringMVC3.0+MyIbatis3.0(分页示例)_第5张图片
  • 大小: 60.9 KB
  • SpringMVC3.0+MyIbatis3.0(分页示例)_第6张图片
  • 大小: 25.2 KB
  • simplePage.jar (4.6 KB)
  • 下载次数: 912
  • SSM-Page.rar (61.2 KB)
  • 下载次数: 1123
  • 查看图片附件

你可能感兴趣的:(ITeye,SQL,Web,iBATIS,JSP)