- 定义一个分页的工具类 (三个参数: 开始下标,每页的size,当前页数 )
PageUtil.java
//开始下标
private int startIndex;
//每页的size
private int pageSize;
//当前页数
private int currentPageNo;
public int getStartIndex() {
return startIndex;
}
public void setStartIndex(int startIndex) {
this.startIndex = startIndex;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getCurrentPageNo() {
return currentPageNo;
}
public void setCurrentPageNo(int currentPageNo) {
this.currentPageNo = currentPageNo;
}
//注意开始下标的获得方式。
public PageUtil(int pageSize, int currentPageNo) {
super();
this.startIndex=(currentPageNo-1)*pageSize;
this.pageSize = pageSize;
this.currentPageNo = currentPageNo;
}
public PageUtil() {
super();
// TODO Auto-generated constructor stub
}
}
- dao层方法中, 改一个查询的方法, 增加一个获取总页数的方法。
daoImpl.java
//在原有的查询方法中,加一个参数,穿工具类进去
public List<Enterprise> getEntList(String search_ename, String search_econtact,String search_etel,PageUtil pageUtil) {
//创建一个容器
List<Enterprise> entList = new ArrayList<Enterprise>();
try {
String sql = "select * from enterprise where 1=1 ";
//做一个装拼接语句的集合
ArrayList<Object> al=new ArrayList<Object>();
//动态拼接
if(search_ename!=null&&!search_ename.equals("")) {
sql=sql+" and ename like ? ";
al.add('%'+ search_ename + '%');
}
if(search_econtact!=null&&!search_econtact.equals("")) {
sql=sql+" and econtact like ? ";
al.add('%'+search_econtact+'%');
}
if(search_etel!=null&&!search_etel.equals("")) {
sql=sql+" and etel like ? ";
al.add("%"+search_etel+"%");
}
///!!!!!!!! 此处为,sql语句,问号为 开始下标,每页记录数
sql=sql+" limit ?,?";
//开始下标,每页记录数 (从工具类中获取)
al.add(pageUtil.getStartIndex());
al.add(pageUtil.getPageSize());
//集合转数组
Object[] obj = al.toArray();
ResultSet rs = DBUtils.query(sql, obj);
while(rs.next()) {
Enterprise ent = new Enterprise();
ent.setEno(rs.getInt("eno"));
ent.setEname(rs.getString("ename"));
ent.setEaddress(rs.getString("eaddress"));
ent.setEcontact(rs.getString("econtact"));
ent.setEtel(rs.getString("etel"));
ent.setEstatus(rs.getInt("estatus"));
ent.setEmemo(rs.getString("ememo"));
entList.add(ent);
}
return entList;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
- dao层方法中, 再 增加一个获取总页数的方法。
daoImpl.java
//参数3个,都是搜索栏里做多项查询的条件。
public int getPageTotal(String search_ename, String search_econtact, String search_etel) {
//创建一个容器
//List<Enterprise> entList = new ArrayList<Enterprise>();
try {
//注意这个查总数的sqL语句!!!!!!!!!!!
String sql = "select count(*) as total from enterprise where 1=1 ";
//做一个装拼接语句的集合
ArrayList<Object> al=new ArrayList<Object>();
//动态拼接
if(search_ename!=null&&!search_ename.equals("")) {
sql=sql+" and ename like ? ";
al.add('%'+ search_ename + '%');
}
if(search_econtact!=null&&!search_econtact.equals("")) {
sql=sql+" and econtact like ? ";
al.add('%'+search_econtact+'%');
}
if(search_etel!=null&&!search_etel.equals("")) {
sql=sql+" and etel like ? ";
al.add("%"+search_etel+"%");
}
//集合转数组
Object[] obj = al.toArray();
ResultSet rs = DBUtils.query(sql, obj);
if(rs.next()) {
// Enterprise ent = new Enterprise();
// ent.setEno(rs.getInt("eno"));
// ent.setEname(rs.getString("ename"));
// ent.setEaddress(rs.getString("eaddress"));
// ent.setEcontact(rs.getString("econtact"));
// ent.setEtel(rs.getString("etel"));
// ent.setEstatus(rs.getInt("estatus"));
// ent.setEmemo(rs.getString("ememo"));
//entList.add(ent);
return rs.getInt("total");
}
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
- Servlet中, 接收数据:
EntServlet.java
if ("entList".equals(method)&&from==null) {
//1、接收参数
String search_ename=request.getParameter("search_ename");
String search_econtact=request.getParameter("search_econtact");
String search_etel=request.getParameter("search_etel");
//为分页接受的参数 page:当前页数; rows:每页的size .
int page=request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
int rows=request.getParameter("rows") == null ? 10 :Integer.parseInt(request.getParameter("rows"));
PageUtil pageUtil=new PageUtil(rows,page);
//2、调用dao层 查询
List<Enterprise> entList= entdao.getEntList(search_ename,search_econtact,search_etel,pageUtil);
//获取总记录数
int total=entdao.getPageTotal(search_ename, search_econtact, search_etel);
//做一个map 要回传的是 : total: 总的记录数; rows: 查询出来的集合。
Map <String, Object> map=new HashMap<String, Object>();
map.put("rows", entList);
map.put("total", total);
//3、json转换数据
JSONObject jsonMap = JSONObject.fromObject(map);
//4、发送数据
response.getWriter().println(jsonMap);
}
- 页面中,设置分页控件的代码
student.html
//设置分页控件
var p = $('#dataList').datagrid('getPager');
$(p).pagination({
pageSize: 10,//每页显示的记录条数,默认为10
pageList: [10,20,30,50,100],//可以设置每页记录条数的列表
beforePageText: '第',//页数文本框前显示的汉字
afterPageText: '页 共 {pages} 页',
displayMsg: '当前显示 {from} - {to} 条记录 共 {total} 条记录',
});