1.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;
private boolean first;
private boolean last;
private int prev;
private int next;
private List<Object> data;
public Pager(){
}
public Pager(int page,int pageSize){
setPage(page);
setPageSize(pageSize);
}
public int getPage() {
if(page >pages && pages < 0){
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 < 1){
pageSize = 10;
}
this.pageSize = pageSize;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
if(rows >=0){
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() {
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;
}
}
2.测试类
import cn.edu.mju.project1.util.Pager;
import org.junit.Test;
public class TestPager {
@Test
public void testPager(){
Pager pager =new Pager();
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());
}
}
3.测试结果:
4.实现类的重写
@Override
public Pager paginate(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;
}