ssm实现分页

之前实现分页,都是写好后端就行,今天要自己全面实现一个分页,不知从何下手,也查了很多,但是基本都是说什么重构框架,自己写sql,计算前一页,前端 js 实现之类的,看的是云里雾里,后来也成功实现了分页,在此记录一下,希望能对大家有帮助。

一、maven pom文件中导入依赖(若没有使用相应的maven构建项目,导入相应的jar包即可)


    com.github.pagehelper
	pagehelper
	3.4.2-fix

二、在mybatis的配置文件里加入相应的插件配置(此处使用的mysql数据库)

	
	
		
			
			
		
	

三、编写一个Page类辅助分页

package com.nine.util;
import java.util.List;

public class Page {
	
	private int start;	// 首页
	private int end;	// 尾页
	private int cur;	// 当前页
	private long total;	// 总记录数
	private List rows;	// 记录的集合(查询出来的相应页的数据)
	
	public Page() {}

	public int getStart() {
		return start;
	}

	public void setStart(int start) {
		this.start = start;
	}

	public int getEnd() {
		return end;
	}

	public void setEnd(int end) {
		this.end = end;
	}

	public int getCur() {
		return cur;
	}

	public void setCur(int cur) {
		this.cur = cur;
	}

	public long getTotal() {
		return total;
	}

	public void setTotal(long total) {
		this.total = total;
	}

	public List getRows() {
		return rows;
	}

	public void setRows(List rows) {
		this.rows = rows;
	}  

}

四、编写Service层查询接口

public interface ManaEmpService {
	// 分页展示所有培训人员
	public Page showAllTraner(int page, int rows);
}

五、实现查询接口

@Service
public class ManaEmpServiceImpl implements ManaEmpService {
	@Autowired
	private StudateMapper studateMapper;

	/**
	 *	 查询所有培训人员
	 *	page: 当前页
	 *	rows: 每一页有多少行
	 */
	@Override
	public Page showAllTraner(int page, int rows) {
		// 创建查询条件
		StudateExample example = new StudateExample();
		// 分页处理
		PageHelper.startPage(page, rows);
		//List list = studateMapper.selectByExample(example);// 此方法查询stucont封装不上,mybatis对text类型特别进行了处理
		List list = studateMapper.selectByExampleWithBLOBs(example);
		// 创建一个返回值对象,封装结果
		Page result = new Page();
		// 封装数据
		result.setRows(list);
		// 取记录总条数
		PageInfo pageInfo = new PageInfo<>(list);
		result.setTotal(pageInfo.getTotal());
		// 取第一页
		result.setStart(pageInfo.getFirstPage());
		// 取最后一页
		result.setEnd(pageInfo.getLastPage());
		// 设置当前页
		result.setCur(page);
		
		return result;
	}

}

六、编写Controller层

@Controller
@RequestMapping("/manager")
public class ManaEmpController {
	// 注入管理员工Service
	@Autowired
	private ManaEmpService manaEmpService;
	
	@RequestMapping("/learningManager/{curpage}")
	public String getAllLeaner(Model model, @PathVariable Integer curpage) {
		Page result = manaEmpService.showAllTraner(curpage, 2);  // 由于数据有限,该处设置每页2行数据,大家可根据自己的需要设置相应的数字
		model.addAttribute("page", result);
		return "trainManager";
	}
	

}

七、前端 jsp 页面代码

1.前端使用bootstrap分页组件

 

效果图:
bootstrap分页
2.在jsp页面的顶部引入Page类,和要分页的数据的类(此处为Studate),和相应的 JSTL标签

<%@ page import="com.nine.pojo.Studate"%>
<%@ page import="com.nine.util.Page"%>
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

3.打印相应的数据

全部人员

工号 姓名 培训项目 是否培训 是否完成 培训日期 详情 编辑 删除

4.分页实现(!!!)
此处为页面显示5页(少于5页则显示实际的页数),自己可以根据自己的意愿编写相应的逻辑

当前页:     共

5.分页结果
ssm实现分页_第1张图片

你可能感兴趣的:(ssm实现分页)