请教各位,如何分批获取数据库中数据?
表中数据量比较大,想控制,
每次100条,分100次取出,
请教Java中如何实现啊?!
------解决方案--------------------首先得知道什么数据库啊,针对的方法是不同的。
一般用的mysql:select * from tableName limit start_num,every_page_items
(tableName指你要读取的数据库表名字,start_num查询的初始位置,every_page_items就是你要设置的每次取出的条目数:如第一次得到第1-100条信息时,start_num用0代替、every_page_items用100;第二次得到第101-200条信息时,start_num用100代替、every_page_items用100等等)。
------解决方案--------------------
如果用的是mysql的话,有个变量limit
select * from table LIMIT start_row,page_num;
start_row表示你从数据库的第几行开始去,page_num表示你一次去的记录数
可以如下编写代码:
你在JSP页面请求中设置参数page=?,即要访问第几页,每页的记录数自己定,
然后让Servlet接收请求参数,调用你查询数据库的那个方法
比如
public List getRecordByPage(int page,int page_num){
//page表示要显示第几页,page_num表示每页显示数目
int start_row = page * page_num;
//现在又了start_row和page_num,编写JDBC代码
}
------解决方案--------------------根据特定数据库的分页功能
Mysql分页采用limt关键字
Mssql 2000分页采用top关键字(20005以上版本也支持关键字rownum)
oracle 采用rownum关键字
------解决方案--------------------如果是用hibernate作为持久化机制的话可以使用hibernate的分页机制+ajax;用js插件的的话比较麻烦
------解决方案--------------------Query query = s.createQuery(sb.toString());//创建你的SQL
int firstRow = 0;
firstRow = pageSize * (currentPage - 1);//初始化第一行 pageSize =100 currentPage =你查了几次或者(如果你一页100条 这个值就是当前页)
query.setFirstResult(firstRow);
query.setMaxResults(pageSize);//一次查多少你的呢等于100
firstRow 根据你现在查到第几行了,
------解决方案--------------------好像与数据库没关系 什么数据库都行这是hibernate 控制的,这样会查多次数据库 ,在内存够多数据量不太或对速度要求不高的系统最好是别用这种,一次查出来放到session 里面更好(个人认为)