1.定义bean类
public class User {
private String name;
private String password;
private String sex;
private int age;
//set get 方法,此处省略不写
}
2.定义用于记录页面数据的分页工具:PageBean类
public class PageBean {
private int pageSize;//页面大小
private int pageNo;//页码
private int totalData;//未分页前的总数据量
private List<User> list;//用于存储查询结果,可以定义泛型,这样一 个PageBean 类可以为多个bean类使用
//set get 方法,此处省略不写
//获取总页数
public int getTotalPages() {
return (totalData + pageSize - 1) / pageSize;
}
//获取上一页
public int getPrePage() {
if(pageNo == 1)
return 1;
else
return pageNo - 1;
}
//获取下一页
public int getNextPage() {
if(pageNo == this.getLastPage())
return this.getLastPage();
else
return pageNo + 1;
}
//获取第一页
public int getFirstPage(){
return 1;
}
//获取最后一页
public int getLastPage(){
if(this.getTotalPages() == 0)
return 1;
else
return this.getTotalPages();
}
}
3.编写dao的实现类
//分页查询
public List<User> pagingGet(int pageNo, int pageSize,User user){
//用于查询数据的sql语句,如果要根据条件查询,应先查询符合条件的结果并编号再分页
String sql = "select temp.* from(select u.*,rownum num from user u where";
//获取页面大小和当前页码
int startNo = pageSize * (pageNo - 1) + 1;
int endNo = startNo + pageSize - 1;
//根据条件查询
if(user.getName() != null && !"".equals(user.getName()){
sql = sql + " name like '%" + user.getName() +"%' and";
}
if(user.getSex() != null && !"".equals(user.getSex()){
sql = sql + " sex = " + user.getSex() +" and";
}
if(user.getAge() != null && !"".equals(user.getAge()){
sql = sql + " age = " + user.getAge() +" and";
}
sql = sql + " temp.num between "+startNo+" and "+endNo;//sql执行语法,此处省略不写,可根据所掌握的知识自行编写
}
//符合查询条件的未分页前的总数据量
public int getTotalRecords(User user){
//用于查询数据的sql语句,如果要根据条件查询,应先查询符合条件的结果并编号再分页
String sql = "select count(*) from user where";
//根据条件查询
if(user.getName() != null && !"".equals(user.getName()){
sql = sql + " name like '%" + user.getName() +"%' and";
}
if(user.getSex() != null && !"".equals(user.getSex()){
sql = sql + " sex = " + user.getSex() +" and";
}
if(user.getAge() != null && !"".equals(user.getAge()){
sql = sql + " age = " + user.getAge() +" and";
}
sql = sql + " 1=1";//sql执行语法,此处省略不写,可根据所掌握的知识自行编写
}
4.编写业务层的实现类
private UserDao userDao = new UserDaoImpl();
public PageBean pagingQuery(int pageNo, int pageSize,User user){
List<User> list = userDao.pagingGet(pageNo, pageSize, user);//查询符合条件的结果
int totalRecords = userDao.getTotalRecords;//获取未分页前的总数据量
PageBean pb = new PageBean();
pb.setList(list);//查询结果
pb.setPageNo(pageNo);//页码
pb.setPageSize(pageSize);//页大小
pb.setTotalData(totalRecords);//未分页前的总数据量
return pb;
}
5.调用业务层分页查询方法