Java的ODBC查询数据怎么分页显示(Servlet)

Java的ODBC查询数据怎么分页显示(Servlet),第1张

这个需要些个JavaBean+servlet去实现,具体要根据你数据的形式和内容而有所不同,假设是若干篇文章要分页显示,那么在数据库方面取出来的数据要先转换成文章这个实体类中,把所有的文章存放到List中,文章类可以有编号,作者,内容,发布时间等若干属性变量,之后的分页功能要单写一个JavaBean类,可以传入一个参数page,比如传入1就从list取出0-9的文章去显示 在servlet中接受page参数,之后调用JavaBean中的方法返回一个文章的list,用sessionsetattribute()把list传到相应页面去显示 具体代码是不可能有的,要根据功能的不同去实现

分页想清楚了就没什么难的了。一般有两种(我就知道两种):

1数据库分页:

/

@param pageItems:一页显示条数 currentPage:当前第几页

@autor godelegant

/

public List findAll(int pageItems,int currentPage){

StringBuffer sqlStr = new StringBuffer("select from Product limit ,");

int startIndex = (currentPage-1)pageItems;);//(currentPage-1)pageItems能过当前页和页面记录数得到应该从哪条开始取

int endIndex = startIndex+pageItems;

dbgetPstmt()setInt(1,startIndex);

dbgetPstmt()setInt(2,endIndex);

ResultSet rs = dbgetPstmt()executQuery();//假设你已经得到了数据库连接

//以上为MYSQL的JDBC分页,下面是ORALCE的,差别只在于SQL,所以你换一下SQL就OK:

StringBuffer sqlStr = new StringBuffer("select ,rownum rn from (select from Product) where rn <= and rownum >=");

}

求总页数的方法很简单,查出所有记录数,除一页显示数。就可以得到

以上是JDBC的,如果使用hibernate等,数据库分页将会变得很简单,只需要设置两个参数,就是从哪取和取多少。

2代码分页

思路是将数据库中的所有记录都取出来,然后再分页。

/

@para items:数据库中的所有记录,你可以使用另一个方法得到,如何查询得到我就不用说了吧

@autor godelegant

/

public List findAll(List items,int pageItems,int currentPage){

int startIndex = (currentPage-1)pageItems;//从哪里开始取

int offset = itemssize()-startIndex;//还有多少没有取过

int pageCount = offset>pageItemspageItems:offset;//如果没有取过的大于需要显示的数,则实现显示数pageCount=pageItems,反之然;

List<Product> pageList = new ArrayList();

for(int i=startIndex,i<startIndex+pageCount,i++){

pageListadd(itemsget(i));

}

return pageList;

}

写了40分钟,希望对你有用

package dlwsxxbase;

public class Pager {

private int totalRows; // 总行数

private int pageSize; // 每页显示的行数

private int currentPage; // 当前页号

private int totalPages; // 总页数

private int startRow; // 当前页在数据库中的起始行

private int pageStartRow; // 当前页开始行

private int pageEndRow; // 当前页结束行

private int hasNextPage; // 下一页存在标识[0:不存在,1:存在]

private int hasPreviousPage; // 前一页存在标识[0:不存在,1:存在]

public Pager() {

}

public Pager(int _totalRows,int _pageSize) {

pageSize = _pageSize;

totalRows = _totalRows;

totalPages = totalRows / pageSize;

int mod = totalRows % pageSize;

if (mod > 0) {

totalPages++;

}

currentPage = 1;

startRow = 0;

}

public int getStartRow() {

return startRow;

}

public int getpageStartRow() {

return pageStartRow;

}

public int getpageEndRow() {

return pageEndRow;

}

public int getTotalPages() {

return totalPages;

}

public int getCurrentPage() {

return currentPage;

}

public int getPageSize() {

return pageSize;

}

public int getHasNextPage() {

return hasNextPage;

}

public int getHasPreviousPage() {

return hasPreviousPage;

}

public void setTotalRows(int totalRows) {

thistotalRows = totalRows;

}

public void setStartRow(int startRow) {

thisstartRow = startRow;

}

public void setPageStartRow(int pageStartRow) {

thispageStartRow = pageStartRow;

}

public void setPageEndRow(int pageEndRow) {

thispageEndRow = pageEndRow;

}

public void setTotalPages(int totalPages) {

thistotalPages = totalPages;

}

public void setCurrentPage(int currentPage) {

thiscurrentPage = currentPage;

}

public void setPageSize(int pageSize) {

thispageSize = pageSize;

}

public void setHasNextPage(int hasNextPage) {

thishasNextPage = hasNextPage;

}

public void setHasPreviousPage(int hasPreviousPage) {

thishasPreviousPage = hasPreviousPage;

}

public int getTotalRows() {

return totalRows;

}

public void first() {

currentPage = 1;

startRow = 0;

pageStartRow = startRow + 1;

thishasFlagSet(currentPage, totalPages);

if (thishasNextPage == 0) {

pageEndRow = totalRows;

} else {

pageEndRow = startRow + pageSize;

}

}

public void previous() {

if (currentPage == 1) {

return;

}

currentPage--;

startRow = (currentPage - 1) pageSize;

pageStartRow = startRow + 1;

thishasFlagSet(currentPage, totalPages);

if (thishasNextPage == 0) {

pageEndRow = totalRows;

} else {

pageEndRow = startRow + pageSize;

}

}

public void next() {

if (currentPage < totalPages) {

currentPage++;

}

startRow = (currentPage - 1) pageSize;

pageStartRow = startRow + 1;

thishasFlagSet(currentPage, totalPages);

if (thishasNextPage == 0) {

pageEndRow = totalRows;

} else {

pageEndRow = startRow + pageSize;

}

}

public void last() {

currentPage = totalPages;

startRow = (currentPage - 1) pageSize;

pageStartRow = startRow + 1;

thishasFlagSet(currentPage, totalPages);

if (thishasNextPage == 0) {

pageEndRow = totalRows;

} else {

pageEndRow = startRow + pageSize;

}

}

public void refresh(int _currentPage) {

currentPage = _currentPage;

if (currentPage > totalPages) {

last();

}

thishasFlagSet(currentPage, totalPages);

}

private void hasFlagSet(int currentPage, int totalPages) {

if (currentPage == totalPages) {

if (currentPage == 1) {

thishasPreviousPage = 0;

thishasNextPage = 0;

} else {

thishasPreviousPage = 1;

thishasNextPage = 0;

}

} else {

if (currentPage == 1) {

thishasPreviousPage = 0;

thishasNextPage = 1;

} else {

thishasPreviousPage = 1;

thishasNextPage = 1;

}

}

}

}

这是我的工程里的分页核心代码,希望对你有用,还有ssh分页文档,可以参照研究一下。

分页显示一般有两种实现方式:业务层分页、数据库层分页(以下会用到两个参数,提前说明下

page:请求第几页,size:每页显示多少条)

业务层分页:从数据库取出所有数据,然后通过传过来的page和size对所有数据截取,比如一共查了100条数据,保存在list里面,要求查询第2页,每页显示10条,则可以通过list属性,取100条数据

中的第11条到第20条,可通过遍历实现。

数据库层分页:数据库都会有分页函数(mysql

是limit函数,sqlserver是row_number()函数,可自行百度下)该方法是通过传过来的page和size在查询数据库时就开始分页,以mysql为例,查询第2页,每页显示10条,则sql语句是

”select

from

xx

limit

10,10“(第一个10表示从下标为10开始查,第二个10是共读取10条)

性能肯定是第二种分页方式好,只要搞懂分页原理,想实现分页其实很简单,只要搞清楚分页是将多条数据中的某几条挑出来

以上就是关于Java的ODBC查询数据怎么分页显示(Servlet)全部的内容,包括:Java的ODBC查询数据怎么分页显示(Servlet)、java分页、如何用java实现分页效果(eclipse工具)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9811015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存