「java取消分页」分页 java
本篇文章给大家谈谈java取消分页,以及分页 java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、JAVA关于数据分页
- 2、怎样用java实现分页显示,该怎么解决
- 3、java的分页操作中,当完成修改,删除等操作的时候,如何跳回本来页面?
- 4、关于JAVA分页代码和删除数据值的问题 高手请进~~~
- 5、java分页
JAVA关于数据分页
给你提供两种思路: 1.你要取第二页,也就就是6-10,你可以先用top 10 ,取出前10个,然后desc倒序,再取出top 5 再倒序,这样就取出6-10个;比如:select top 5 from (select top 10 * from table_1 desc) t desc 2.sqlserver 和oracle都有row_number() 这样的列,就是你取出的结果集给你多加一个列,你按row_number()去结果集也行。 比如:with table001 as (select row_number() over (order by Qid) as row_number , * from ( "+sql+") k) select * from table001 where row_number= ? and row_number= ? order by Qid 这个是我之前项目中的sql语句。你参考一下,作用就是 取( "+sql+") 中的sql 中的两个?之间的数据 --------------------------- 你要取页数,可以用第二个思路,pk不一定是连续,可能有些数据给删除;但是查询出来的结果集加上的row_number(),肯定是连续, row_number%5==0;page = row_number/5 row_number%5!=0;page = row_number/5+1 蓝屏
怎样用java实现分页显示,该怎么解决
在项目中,分页是一个项目中必不可少的,它可以防止我们从数据库中进行大量数据查询时速度变慢,提高我们的查询效率
1、定义分页模型:PageModel
package com.common.page;
import java.util.List;
/**
* 封装分页信息
* @author Administrator
*
*/
public class PageModelE {
//结果集
private ListE list;
//查询记录数
private int totalRecords;
//每页多少条数据
private int pageSize;
//第几页
private int pageNo;
/**
* 总页数
* @return
*/
public int getTotalPages() {
return (totalRecords + pageSize - 1) / pageSize;
}
/**
* 取得首页
* @return
*/
public int getTopPageNo() {
return 1;
}
/**
* 上一页
* @return
*/
public int getPreviousPageNo() {
if (pageNo = 1) {
return 1;
}
return pageNo - 1;
}
/**
* 下一页
* @return
*/
public int getNextPageNo() {
if (pageNo = getBottomPageNo()) {
return getBottomPageNo();
}
return pageNo + 1;
}
/**
* 取得尾页
* @return
*/
public int getBottomPageNo() {
return getTotalPages();
}
public ListE getList() {
return list;
}
public void setList(ListE list) {
this.list = list;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
}
2、分页测试:在MySQL中建立admin表,里面有字段id、name、password
3、简历Admin的实体bean类:
package com.common.page;
public class Admin {
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4、测试调用: package com.common.page;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.common.db.DbUtil;
public class Client {
public static PageModel findAdmins(int pageNo,int pageSize){
Connection conn=DbUtil.getConnection();
String sql="select * from admin limit ?,?";
PageModel pageModel=null;
PreparedStatement pstm=null;
ResultSet rs=null;
Admin admin=null;
ListAdmin list=new ArrayListAdmin();
try {
pstm=conn.prepareStatement(sql);
pstm.setInt(1, (pageNo-1)*pageSize);
pstm.setInt(2, pageNo*pageSize);
rs=pstm.executeQuery();;
while(rs.next()){
admin=new Admin();
admin.setId(rs.getInt("a_id"));
admin.setName(rs.getString("a_name"));
admin.setPassword(rs.getString("a_pwd"));
list.add(admin);
}
ResultSet rs2=pstm.executeQuery("select count(*) from admin");
int total=0;
if(rs2.next()){
total=rs2.getInt(1);
}
pageModel=new PageModel();
pageModel.setPageNo(pageNo);
pageModel.setPageSize(pageSize);
pageModel.setTotalRecords(total);
pageModel.setList(list);
} catch (SQLException e) {
e.printStackTrace();
}finally{
DbUtil.close(conn);
DbUtil.close(pstm);
DbUtil.close(rs);
}
return pageModel;
}
public static void main(String[] args) {
PageModel pageModel=Client.findAdmins(2,4);
ListAdmin list=pageModel.getList();
for(Admin a:list){
System.out.print("ID:"+a.getId()+",用户名:"+a.getName()+",密码:"+a.getPassword());
System.out.println();
}
System.out.print("当前页:"+pageModel.getPageNo()+" ");
System.out.print("共"+pageModel.getTotalPages()+"页 ");
System.out.print("首页:"+pageModel.getTopPageNo()+" ");
System.out.print("上一页:"+pageModel.getPreviousPageNo()+" ");
System.out.print("下一页:"+pageModel.getNextPageNo()+" ");
System.out.print("尾页:"+pageModel.getBottomPageNo()+" ");
System.out.print("共"+pageModel.getTotalRecords()+"条记录");
System.out.println();
}
}
这样分页效果就实现了,我们要实现分页效果,只要传入相应的参数和相应的数据库执行语句即可实现,希望大家能灵活运用。
java的分页操作中,当完成修改,删除等操作的时候,如何跳回本来页面?
如果用myeclipse这种强大工具,写分页用SSH框架,大概15分钟左右。在action中的删除方法的return处,你retrun你action中的分页方法就可以了。比如你删除方法叫del(), 在这个del()方法的结尾出你return你分页的方法,比如分页方法就叫fenye().你return fenye();就可以了~~
关于JAVA分页代码和删除数据值的问题 高手请进~~~
听你这么说,必定是你的sql语句写的有问题,你既然没有贴出代码,我也没办法给你找错,下面针对你的问题的代码, (假设数据库中有张news新闻表)不知道你用的是什么数据库,这里针对的是mysql数据库:
//先针对数据库的news表写一个java bean
import java.io.Serializable;
import java.sql.Date;
public class news implements Serializable
{
private int news_id;
private String news_title;
private String news_content;
private int news_type_id;
private String pubtime;
public news(int news_id, String news_title, String news_content, int news_type_id, String pubtime) {
super();
this.news_id = news_id;
this.news_title = news_title;
this.news_content = news_content;
this.news_type_id = news_type_id;
this.pubtime = pubtime;
}
public news(){}
public String getNews_content() {
return news_content;
}
public void setNews_content(String news_content) {
this.news_content = news_content;
}
public int getNews_id() {
return news_id;
}
public void setNews_id(int news_id) {
this.news_id = news_id;
}
public String getNews_title() {
return news_title;
}
public void setNews_title(String news_title) {
this.news_title = news_title;
}
public int getNews_type_id() {
return news_type_id;
}
public void setNews_type_id(int news_type_id) {
this.news_type_id = news_type_id;
}
public String getPubtime() {
return pubtime;
}
public void setPubtime(String pubtime) {
this.pubtime = pubtime;
}
}
//再写一个操作数据库的dbo
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
public class newsDBO {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
public ArrayList getNews(int page_num, int page_count )//分页代码
{
news s=null;
ArrayList list = new ArrayList();
try{
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//获得数据库连接。注:test是数据库名,news表在这个数据库中
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
String sql="select * from news limit " +( page_num-1)*page_count +"," + page_count ;
System.out.println(sql);//这是调试用的,可以检验你的sql语句有没有错,错在哪里
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next())
{
s=new news();
s.setNews_content(rs.getString("news_content"));
s.setNews_id(rs.getInt("news_id"));
s.setNews_title(rs.getString("news_title"));
s.setNews_type_id(rs.getInt("news_type_id"));
s.setPubtime(rs.getString("pubtime"));
list.add(s);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return list;
}
public boolean delNewsById(int news_id){
boolean flag = true;
try{
conn = DBTools.getConnection();
String sql = "delete from news where news_id = " + news_id;
ps = conn.prepareStatement(sql);
System.out.println(sql);//调试代码
//千万别忘了执行!!!不写下面这一句,所有的代码都白写了,根本就没往数据库送!!
ps.execute();
catch (Exception e) {
flag = false;
e.printStackTrace();
}
return flag;
}
}
//下面是分页的jsp页面
%@ page language="java" import="java.util.*" pageEncoding="gbk"%
!-- 把包导入--
jsp:directive.page import="dbo.newsDBO" /
jsp:directive.page import="Beans.news" /
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
html
head
titleMy JSP 'news.jsp' starting page/title
/head
body
table border="1"
tr
td新闻序号/td
td新闻标题/td
td新闻内容/td
td新闻类型/td
td新闻时间/td
td基本操作/td
/tr
%
int page_num = 1;
int page_count = 5;
String num = request.getParameter("page_num");
if(num != null){
page_num = Integer.parseInt(num);
}
newsDBO nd = new newsDBO();
ArrayList al=nd.getNews(page_num,page_count);
news n=null;
for(int i=0; i al.size(); i++){
n=(news)al.get(i);
%
tr
td%=n.getNews_id()%/td
td%=n.getNews_title()%/td
td%=n.getNews_content()%/td
td%=n.getNews_type_id()%/td
td%=n.getPubtime()%/td
tda href="delete_news.jsp?id=%=n.getNews_id()%"删除/a/td
/tr
/table
/body
/html
//删除页面delete.jsp
%@ page language="java" pageEncoding="gbk"%
jsp:directive.page import="dbo.newsDBO"/
body
%
String sid = request.getParameter("id");
System.out.println(sid);
int id = Integer.parseInt(sid);
newsDBO dbo = new newsDBO();
dbo.delNewsById(id);
%
/body
/html
大概就是这样了,说明下,上面的代码是我从以前做的新闻网站中经修改而来的,但是以前因为做的是一个网站,所以全部代码比较复杂,但是也没必要给你,因为根你的问题没多大关系,为了代码简洁和便于你理解,jsp页面我专门给你写了,就是上面的,希望能解决你的问题,也就算我没白忙,呵呵
对了,如果你的数据库不是mysql,那你可以到网上找一下相应数据库的分页语句,比如oracle,sqlsever等,其实原理是一样的,不过sql语句稍有不同而已.所以我这里不再多说了
java分页
分页想清楚了就没什么难的了。一般有两种(我就知道两种):
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;
db.getPstmt().setInt(1,startIndex);
db.getPstmt().setInt(2,endIndex);
ResultSet rs = db.getPstmt().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 = items.size()-startIndex;//还有多少没有取过
int pageCount = offsetpageItems?pageItems:offset;//如果没有取过的大于需要显示的数,则实现显示数pageCount=pageItems,反之然;
ListProduct pageList = new ArrayList();
for(int i=startIndex,istartIndex+pageCount,i++){
pageList.add(items.get(i));
}
return pageList;
}
写了40分钟,希望对你有用
java取消分页的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于分页 java、java取消分页的信息别忘了在本站进行查找喔。