我是菜鸟
现在有一个问题是这样的,程序在数据库中查询出3W左右的数据,保存到数组中后,在界面中一次全部显示会出错.
如果分页显示的话,实现代码大概是如何的?不能每次重新在数据库中查询符合当前页的数据(这样速度太慢).
有删除\上下页\首页\末页 按钮.所以每次调用的数组仍然是所有数据.只是页面只显示当前数据(从数组当中读取但不remove).
现在有一个问题是这样的,程序在数据库中查询出3W左右的数据,保存到数组中后,在界面中一次全部显示会出错.
如果分页显示的话,实现代码大概是如何的?不能每次重新在数据库中查询符合当前页的数据(这样速度太慢).
有删除\上下页\首页\末页 按钮.所以每次调用的数组仍然是所有数据.只是页面只显示当前数据(从数组当中读取但不remove).
分页查询的代码依赖于数据库。
比如,如果是SQL Server2000要用到Top,是Oracle要用到Rownum……
public class ListPaginationl {
private int sum; //所有数据
private int pageSum; //所有页
private int pageNumber=0; //页号
private int row =10; //每页显示数量
public List getAllPage(List allList,HttpSession session)
{
sum=allList.size();
pageSum=sum/row;
session.setAttribute("pageSum", ""+pageSum);
session.setAttribute("pageNumber", ""+pageNumber);
session.setAttribute("table", allList);
int start=pageNumber*row;
int over=start+row;
if(over>allList.size())
{
over=allList.size();
}
List l= allList.subList(start, over);
return l;
}
public List getpage(HttpSession session,int page_Number_Insert)
{
List allList =(List)session.getAttribute("table");
String page_Sum_Str=(String)session.getAttribute("pageSum");
int page_Sum =java.lang.Integer.parseInt(page_Sum_Str);
String page_Number_Str=(String)session.getAttribute("pageNumber");
int page_Number=java.lang.Integer.parseInt(page_Number_Str);
int start=0;
int over=0;
if(page_Number_Insert<=page_Sum)
{
session.setAttribute("pageNumber", ""+page_Number_Insert);
}
else
{
start=page_Number*row;
over=start+row;
}
List l= allList.subList(start, over);
return l;
}
public List nextPage(HttpSession session)
{
List allList=(List)session.getAttribute("table");
String page_Sum_Str=(String)session.getAttribute("pageSum");
int page_Sum =java.lang.Integer.parseInt(page_Sum_Str);
String page_Number_Str=(String)session.getAttribute("pageNumber");
int page_Number=java.lang.Integer.parseInt(page_Number_Str);
session.setAttribute("pageNumber", page_Number+1+"");
int start=(page_Number+1)*row;
if(start>allList.size())
{
start=0;
session.setAttribute("pageNumber", 0+"");
}
int over=start+row;
if(over>allList.size())
{
over=allList.size();
}
List l= allList.subList(start, over);
return l;
}
public List upPage(HttpSession session)
{
List allList=(List)session.getAttribute("table");
String page_Sum_Str=(String)session.getAttribute("pageSum");
int page_Sum =java.lang.Integer.parseInt(page_Sum_Str);
String page_Number_Str=(String)session.getAttribute("pageNumber");
int page_Number=java.lang.Integer.parseInt(page_Number_Str);
session.setAttribute("pageNumber", page_Number-1+"");
int start=(page_Number-1)*row;
if(start<0)
{
start=page_Sum*10;
session.setAttribute("pageNumber",page_Sum+"");
}
int over=start+row;
if(over>allList.size())
{
over=allList.size();
}
List l= allList.subList(start, over);
return l;
}
public List getFindCompany(Auditadministrationorg c) throws Exception {
HQLAccessor accessor = null;
accessor = DBFactory.getHQLAccessor();
Map maps = new HashMap();
maps.put("company", "%"+c.getCompany()+"%");
maps.put("comkind", "%"+c.getComkind()+"%");
maps.put("comprincipal", "%"+c.getComprincipal()+"%");
maps.put("chamber", "%"+c.getChamber()+"%");
maps.put("chamberprincipal", "%"+c.getChamberprincipal()+"%");
maps.put("person","%"+c.getPerson()+"%");
String hql="findAllAuditadministrationorg";
try{
List list=accessor.query(hql,maps);
return list;
}finally{
if(accessor != null){
try {
accessor.close();
} catch (DBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}