Pager类的编码:
package cn.edu.mju.project1.util;
import java.util.List;
public class Pager {
private int page = 1;
private int pageSize = 10;
private int rows;//行号
private int pages;//总行数,只需要get方法
private boolean first;//是不是第一页,只需要get方法
private boolean last;//是不是最后一页,只需要get方法
private int prev;//只需要get方法
private int next;//只需要get方法
private List<Object> data;
public Pager() {
}
public Pager(int page, int pageSize) {
setPage(page);
setPageSize(pageSize);
}
public int getPage() {
if(page > pages){
page = pages;
}
if (page < 1) {
page = 1;
}
return page;
}
public void setPage(int page) {
if(page < 1){
page = 1;
}
this.page = page;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
if(pageSize < 10){
pageSize = 10;
}
this.pageSize = pageSize;
}
public int getRows() { return rows; }
public void setRows(int rows) {
if(rows >= 0){
this.rows = rows;
}
this.rows = rows;
}
public int getPages() {
pages = rows/pageSize;
if(pages * pageSize < rows){
pages = pages + 1;
}
if(pages < 1){
pages = 1;
}
return pages;
}
public boolean isFirst() {
if(page == 1){
return true;
}else{
return false;
}
}
public boolean isLast() {
getPages();
if(page == pages){
return true;
}else{
return false;
}
}
public int getPrev() {
prev = page -1;
if(prev < 1){
prev = 1;
}
return prev;
}
public int getNext() {
getPages();
next = page + 1;
if(next > pages){
next = pages;
}
return next;
}
public List<Object> getData() {
return data;
}
public void setData(List<Object> data) {
this.data = data;
}
}
对Pager类创建测试类TestPager进行测试:
import cn.edu.mju.project1.util.Pager;
import org.junit.Test;
public class TestPager {
@Test
public void testPager(){
Pager pager = new Pager();
pager.setPage(10);
pager.setRows(11);
System.out.println("page " + pager.getPage());
System.out.println("pageSize " + pager.getPageSize());
System.out.println("pages " + pager.getPages());
System.out.println("prev " + pager.getPrev());
System.out.println("next " + pager.getNext());
System.out.println("first " + pager.isFirst());
System.out.println("last " + pager.isLast());
}
}
测试结果如下:
对IBandDao接口的实现类BandDao的覆盖重写的pagienate(实现分页查询)方法的方法体进行完善编写,如下:
@Override
public Pager pagienate(int page, int pageSize, Band band) {
Pager pager = new Pager(page, pageSize);
String sql = "SELECT COUNT(*) AS total FROM band ";
StringBuilder where = new StringBuilder(" WHERE 1=1 ");
List<Object> params = new ArrayList<>();
if (band != null) {
if (band.getName() != null && !"".equals(band.getName())) {
where.append(" AND name LIKE ? ");
params.add("%" + band.getName() + "%");
}
if (band.getRemark() != null && !"".equals(band.getRemark())) {
where.append(" AND remark LIKE ? ");
params.add("%" + band.getRemark() + "%");
}
}
try {
Connection conn = MySqlDbUtil.getConnection();
PreparedStatement pst = conn.prepareStatement(sql + where.toString());
for (int i = 0; i < params.size(); i++) {
pst.setObject(i + 1, params.get(i));
}
ResultSet rs = pst.executeQuery();
if (rs.next()) {
pager.setRows(rs.getInt("total"));
}
rs.close();
pst.close();
sql = "SELECT * FROM band";
pst = conn.prepareStatement(sql + where.toString() + " LIMIT ?, ?");
int index = 0;
for (int i = 0; i < params.size(); i++) {
++index;
pst.setObject(i + 1, params.get(i));
}
pst.setObject(++index, (pager.getPage() - 1) * pager.getPageSize());
pst.setInt(++index, pager.getPageSize());
rs = pst.executeQuery();
List<Object> data = new ArrayList<>();
while (rs.next()) {
band = new Band();
band.setId(rs.getInt("id"));
band.setName(rs.getString("name"));
band.setRemark(rs.getString("remark"));
data.add(band);
}
pager.setData(data);
rs.close();
pst.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return pager;
}