Maven+SSM利用PageHelper实现分页

1.导入jar包

在pom配置文件中,引入jar包,如果是分模块的可以在总的pom文件下引入。


    com.github.pagehelper
    pagehelper
    5.1.2

2.在applacationContext.xml中配置PageHelper

加在... ...


	 
       
           
               
                   mysql
                   true	//最后页的下一页或者首页的上一页时,自动处理错误
               
           
       
   

3.在controller层请求时候传递2个参数:当前页,每页的条数

@RequestMapping("/findAll.do")
public String  getAllDoctor(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "5") int size) {
 	List all = docService.getAllDoctor(page, size);	//得到所有信息
  //...
}

@RequestParam(defaultValue = "1")@RequestParam(defaultValue = "5") 设置没有参数的时候默认值

4.在service层,调用dao的查询所有记录前添加PageHelper

  @Override
  public List getAllDoctor(int page, int size) {
       PageHelper.startPage(page,size);
       return iDoctorDao.getAllDoctor(page,size);
  }

5.根据controller调用service得到的list生成一个PageInfo对象

@RequestMapping( value = "/ajaxGetAllDoctor.do",produces = "application/json; charset=utf-8")
@ResponseBody
public String  getAllDoctor(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "5") int size) {
 	List all = docService.getAllDoctor(page, size);	//得到所有信息
  //...
    PageInfo pageInfo = new PageInfo(all);
  //...
}

6.jsp页面处理分页

PageInfo 对象要添加在Model中,可以直接页面中通过PageInfo 对象设置请求的 页号和条数


ajax请求的分页

导航条标签和样式

controller中需要传回来 当前页号 和 总页数

 @RequestMapping( value = "/ajaxGetAllDoctor.do",produces = "application/json; charset=utf-8")
 @ResponseBody
 public String  getAllDoctor(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "5") int size) {
      List all = docService.getAllDoctor(page, size);
      PageInfo pageInfo = new PageInfo(all);
      int pageNum = pageInfo.getPageNum();    //获取当前分页页号
      int pages = pageInfo.getPages();        //获取总的页数

      JSONArray array = new JSONArray();

      List list = pageInfo.getList(); //得到分页的结果
      for (Doctor doctortemp:   list ) {
            JSONObject jsonItem = new JSONObject();
       		//..处理数据

            array.put(jsonItem);    //将一个医生信息的json对象加入到array中
        }
        JSONObject json = new JSONObject();
        json.put("doctorList",array);   //将医生的信息列表加入到json
        json.put("pageNum",pageNum);    //将当前页号传入到json
        json.put("pages",pages);        //将总的页数传入到json
        return json.toString();
    }

请求函数,成功的时候清除掉分页按钮之前绑定的事件,重新添加事件

function getDoctorList(page,size) {
		page=page||1;
		size=size||5;	//设置默认第一页,每页5条记录
		$.ajax({
			url : "/Administrator/ajaxGetAllDoctor.do",
			type : "POST",
			data : {
				page:   page,
				size:  size
			},
			dataType : "json",
			//处理后端返回的数据
			success : function(result) {
				var doctorList = result.doctorList;		//得到结果
				var pageNum = result.pageNum;		//当前页数
				var pages = result.pages;					//总页数
				//处理doctorList
                $("#content").html("");
				$.each(doctorList,function (index, item) {
				
				});
			/************************************************************************/
				if(pageNum>0 && pages>0) {

					//***重要:清除之前绑定的,不然绑定多个,就会触发多个
                    $("#first-page").unbind("click");
                    $("#pre-page").unbind("click");
                    $("#next-page").unbind("click");
                    $("#last-page").unbind("click");

                    $("#pages").text(pages);					//设置总页数
                    $("#first-page").click(function () {	//首页
                        getDoctorList(1,size)
                    });
                    $("#current-page").text(pageNum);//设置当前页
                    $("#pre-page").click(function () {	//上一页
                        getDoctorList(pageNum-1,size)
                    });
                    $("#next-page").click(function () {	//下一页
                        if(pageNum

下拉框改变的时候调用请求函数

 $("#size-select").change(function(){
       var size = $("#size-select option:selected").val();
       getDoctorList(1,size);
   });

Maven+SSM利用PageHelper实现分页_第1张图片
Maven+SSM利用PageHelper实现分页_第2张图片

你可能感兴趣的:(Maven+SSM利用PageHelper实现分页)