本文目录一览:
java分页
分页想清楚了就没什么难的了。一般有两种(我就知道两种):
- 数据库分页:
/**
* @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;
db.getPstmt().setInt(1, startIndex);
db.getPstmt().setInt(2, endIndex);
ResultSet rs = db.getPstmt().executeQuery(); //假设你已经得到了数据库连接
//以上为MYSQL的JDBC分页,下面是ORACLE的,差别只在于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 = items.size() - startIndex; //还有多少没有取过
int pageCount = offset > pageItems ? pageItems : offset; //如果没有取过的大于需要显示的数,则实现显示数pageCount=pageItems,反之然;
List<Product> pageList = new ArrayList<>();
for (int i = startIndex; i < startIndex + pageCount; i++) {
pageList.add(items.get(i));
}
return pageList;
}
写了40分钟,希望对你有用。
java中这种分页怎么实现的
方法太多了。 如果是JDBC的话:
- 分两方面:
- 数据库分页
- 代码分页 如果是框架持久层的话: 一般持久层的查询对象都要相关方法设置:
- 比如设置一次取多少
- 从那条记录开始取 还可以去引入一些外部分页的jar包。 总体思想是这样的: 首先肯定需要几个参数:请求的页数,一页显示多少条数据,数据库真实的条数。 首先查出所有数据放入一个集合里面,当然如果数据更新次数少竟然用缓存。 然后根据数据库总条数与每页显示条数得到真正的页数。 根据一页条数和请求的页可以得到一个查询的范围。 在这个范围内,把数据从刚才那个集合里取出放入一个新的集合。前台要显示的就是这个集合的数据。 至于导航,自然就是页数的加减了。 具体代码,有兴趣发邮件我,我可以给你几个例子的做法。kyoxue@126.com
Java中如何实现分页功能
实现原理很简单,就是建立一个Page类,里面放当前访问的页数和每一页显示的记录行数。然后通过分页计算就可以得出下列数据:
- 总页数 = 总记录数 / 每页大小,如果
0 != 总记录数 % 每页大小
,那么总页数再+1。 - 当前页数。
- 表记录的起始位置 =
(当前页数 - 1) * 每页大小
。 - 总记录数(
select count(*) from [表名] [where [条件]]
,从数据库中查询得到)。 - 每页大小,可以固定,也可以从页面传过来。 有了这几个参数之后,就用SQL语句查出对应的记录就可以了。
JAVA如何实现网页分页功能?
- Hibernate:有分页的查询函数可用...
- 搜索后分页:
- 在页面中使用隐藏域。
- 搜索之后,返回的页面中隐藏域保存了搜索的信息。
- 而分页的链接 -> 执行函数将:
- 隐藏域中的搜索信息
-
- 页码
- 作为参数传递至后台,由后台进行查询。 往后台传字符串乱码问题?
- 你的页面是什么编码?执行请求是GET还是POST方法?
- GET方法的话需要注意URL中包含中文字符的问题,可以先将其转为ISO8859-1再发送请求。
- 在后台获取到中文信息出现乱码的话,可以使用一个全局的过滤器,将请求中的编码信息设置为页面所用的编码,此后再获取信息时,控制器将自动进行编码转换了(如ISO8859-1到GBK的转换)。
- 强烈建议数据库、程序、页面都使用UTF8的编码! 如果不用隐藏域的话,用Cookie去控制。
java的分页
this.sqlStr = sqlStr + " limit " + irows + "," + pageSize;
这句是:sqlStr
是用来存放你的SQL语句的变量;整个的意思就是:
比如:
sqlStr = "select * from user";
this.sqlStr = "select * from user limit 9,4"
就是查询表user数据从第九行开始,向后查4行。每页显示4行数据。
String[] sData = new String[6]; // 定义一个大小为6的字符串数组
for (int j = 0; j < rsmd.getColumnCount(); j++) { // *******************getColumnCount()什么意思有啥用????
sData[j] = rs.getString(j + 1);
}
这句是循环遍历,将数据库的数据循环遍历的赋给字符串数组。 亲,希望我的回答对你有帮助。
java分页查询原理思路
你好,很高兴回答你的问题。 分页有两种,一种是假分页:
- 就是一次性将数据全部查询出来,然后在展示的时候从这些数据(一般是集合)中取指定索引范围的数据。 另一种是真分页:
- 也就是查询数据时只查询符合条件的数据中的一部分。比如MySQL查询时使用
LIMIT
。 如果有帮助到你,请点击采纳。