可以考虑用javabean实现一个view和一个databean类
public class ListView
{
   String tableName;//表名
   int pageSize//每页的条数
   int index//第几页
   HashMap data//存放 pageSize个记录。
   public void put(DataBean d)
{
   if(data==null)
      data=new Hashmap();
   data.put(d);
}
   /........
}
public class DataBean
{
   public void setXXXX()
  public String getXXX()
  //记录中有多少个列就写多少个set/get方法
}
这样做有一个缺点,加入第一页从table1得到,第二页table1只有2条记录,其余的要从table2得到。
 可以考虑的一个解决方案是首先一次从总表中把表名一次取出,放在一个List中,实现排序
以后写sql是就可以这样
List list=//???获得表名
ListView v=new ListView();
String sql="select * from ";
for(int i=0;i<list.size();i++)
{
  sql+=list.get(i).toString();
   for(int j=pageSize*index;j<(pageSize*index+1);j++)
   {
       DataBean data=new DataBean();
      set=//executeQuery(sql);
      data.setXXX(set.getXXX(XXXX));
       ////
      v.put(data);
    }
}
至于setAttribute的问题,只要set的值不是null,对效率不会影响太大,但是大小最好不要超过10M.

解决方案 »

  1.   

    我用的是一次性全部放在ArrayList中,然后在用另一个函数分页
      

  2.   

    分页是针对ResultSet进行的,与表的多少没有太大的关系(性能方面的影响除外)。
      

  3.   

    如果采取一次性全部读取的方法,如果数据库里有大量数据的话,执行select是会变得很慢吧?
      

  4.   

    应该是第一次很慢吧?第二次直接从ArrayList中读取就可以了