刚刚弄得一个分页对象比较简单
1 package com.netmovie.ent.util;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 public class PaginationSupport {
7
8 private static final int DEFAULT_COUNT_ON_EACH_PAGE = 10;
9
10 private int startPage = 1;// 当前页数
11
12 private int pageSize = DEFAULT_COUNT_ON_EACH_PAGE;// 每页显示条数
13
14 private int startIndex;// 分页首行
15
16 private int pageCount = 0;// 页数
17
18 private int totalCount;// 一共多少条记录
19
20 private int[] indexes = new int[0];
21
22 private List items = new ArrayList();
23
24
25 public List getItems() {
26 return items;
27 }
28
29 public void setItems(List items) {
30 this.items = items;
31 }
32 public boolean isPages(){
33 if(this.pageCount<=1){
34 return false;
35 }else{
36 return true;
37 }
38 }
39 public boolean getIsNextPage() {
40 if(this.startPage>=this.getPageSize()){
41 return false;
42 }
43 return true;
44 }
45 public boolean getIsPreviousPage() {
46 if(this.startPage<=1){
47 return false;
48 }
49 return true;
50 }
51
52 public void setTotalCount(final int totalCount) {
53 if (totalCount > 0) {
54 this.totalCount = totalCount;
55 int count = totalCount / pageSize;
56 if (totalCount % pageSize > 0) {
57 count++;
58 }
59 indexes = new int[count];
60 for (int i = 0; i < count; i++) {
61 indexes[i] = pageSize * i;
62 }
63 this.pageCount = count;
64 } else {
65 this.pageCount = 0;
66 this.totalCount = 0;
67 }
68 }
69
70 public int getPreviousPage() {
71
72 if (getStartPage() >1) {
73 return getStartPage() - 1;
74 } else {
75 return 1;
76 }
77
78 }
79 public int getNextPage() {
80 if (getStartPage() <= pageCount) {
81 return getStartPage() + 1;
82 } else {
83 return pageCount;
84 }
85 }
86 public int getStartPage() {
87 return startPage;
88 }
89 public void setStartPage(int startPage) {
90 int _pageCount = getPageCount();
91 if (startPage <=1) {
92 this.startPage = 1;
93 } else if (startPage > _pageCount) {
94 this.startPage = _pageCount;
95 } else {
96 this.startPage = startPage;
97 }
98 setStartIndex(indexes[this.startPage - 1]);
99 }
100
101 public int getStartIndex() {
102 return startIndex;
103 }
104
105 public void setStartIndex(int startIndex) {
106 this.startIndex = startIndex;
107 }
108
109 public int getTotalCount() {
110 return totalCount;
111 }
112
113 public int getPageSize() {
114 return pageSize;
115 }
116
117 public void setPageSize(int pageSize) {
118 this.pageSize = pageSize;
119 }
120
121 public int getPageCount() {
122 return pageCount;
123 }
124
125 public void setPageCount(int pageCount) {
126 this.pageCount = pageCount;
127 }
128 }
129
130 dao
131 public static PaginationSupport newsByMovie(final int startPage,final int pageSize){
132 Connection con = null;
133 PreparedStatement ps = null;
134 ResultSet rs = null;
135 PaginationSupport pageSupport = new PaginationSupport();
136 List items = new ArrayList();
137 try {
138
139 con = DbHelp.getConnection();
140 String sqlCount = "select count(1) from ent_news_prop " +
141 "t left outer JOIN ent_news ent on(t.new_id=ent.nid) ";
142 ps = con.prepareStatement(sqlCount);
143 rs = ps.executeQuery();
144 int totalCount = 0;
145 while(rs.next()){
146 totalCount = rs.getInt(1);
147 }
148 pageSupport.setPageSize(pageSize);
149 pageSupport.setTotalCount(totalCount);
150 pageSupport.setStartPage(startPage);
151 StringBuffer sb = new StringBuffer();
152 sb.append("SELECT * FROM ( SELECT tt.*,ROWNUM r FROM ( ");
153 String sql = "select t.new_id as newsId,t.movie_id as movieId,ent.title as title,ent.createdate as pubDate,ent.url url from ent_news_prop " +
154 "t left outer JOIN ent_news ent on(t.new_id=ent.nid) ";
155 sb.append(sql);
156 sb.append(") tt WHERE ROWNUM <= ? ) where r>= ? ");
157 ps = con.prepareStatement(sb.toString());
158 ps.setLong(1,pageSupport.getStartIndex()+pageSupport.getPageSize()-1);
159 ps.setLong(2,pageSupport.getStartIndex());
160 rs = ps.executeQuery();
161 MovieNews movieNews = null;
162 Date pubDate = null;
163 int i = 0;
164
165 while (rs.next()) {
166 movieNews = new MovieNews();
167
168 movieNews.setNewsId(rs.getInt("newsId"));
169 movieNews.setMovieId(rs.getInt("movieId"));
170 movieNews.setTitle(rs.getString("title"));
171 pubDate = (Date)rs.getDate("pubDate");
172 movieNews.setPubDate(f.format(pubDate));
173 movieNews.setUrl(rs.getString("url"));
174 items.add(movieNews);
175 }
176 pageSupport.setItems(items);
177 }catch(SQLException e){
178 e.printStackTrace();
179 }finally {
180 DbHelp.close(rs, ps, con);
181 }
182 return pageSupport;
183 }
getPageCount()总页数
getStartPage()当前页
getNextPage() 下一页
getPreviousPage() 上一页
isPages() 是否已经分页
getIsNextPage() 是否有下一页
getIsPreviousPage() 是否有上一页
getTotalCount()共有多少条
getItems() 结果集
setTotalCount(otalCount) 设置总行数
isPages() 是否有分页
191 getIsNextPage() 是否有下一页
192 getIsPreviousPage() 是否有上一页
193 getTotalCount()共有多少条
194 getItems() 结果集
195 setTotalCount(final int totalCount) 设置总行数> totalCount) 设置总行数
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 public class PaginationSupport {
7
8 private static final int DEFAULT_COUNT_ON_EACH_PAGE = 10;
9
10 private int startPage = 1;// 当前页数
11
12 private int pageSize = DEFAULT_COUNT_ON_EACH_PAGE;// 每页显示条数
13
14 private int startIndex;// 分页首行
15
16 private int pageCount = 0;// 页数
17
18 private int totalCount;// 一共多少条记录
19
20 private int[] indexes = new int[0];
21
22 private List items = new ArrayList();
23
24
25 public List getItems() {
26 return items;
27 }
28
29 public void setItems(List items) {
30 this.items = items;
31 }
32 public boolean isPages(){
33 if(this.pageCount<=1){
34 return false;
35 }else{
36 return true;
37 }
38 }
39 public boolean getIsNextPage() {
40 if(this.startPage>=this.getPageSize()){
41 return false;
42 }
43 return true;
44 }
45 public boolean getIsPreviousPage() {
46 if(this.startPage<=1){
47 return false;
48 }
49 return true;
50 }
51
52 public void setTotalCount(final int totalCount) {
53 if (totalCount > 0) {
54 this.totalCount = totalCount;
55 int count = totalCount / pageSize;
56 if (totalCount % pageSize > 0) {
57 count++;
58 }
59 indexes = new int[count];
60 for (int i = 0; i < count; i++) {
61 indexes[i] = pageSize * i;
62 }
63 this.pageCount = count;
64 } else {
65 this.pageCount = 0;
66 this.totalCount = 0;
67 }
68 }
69
70 public int getPreviousPage() {
71
72 if (getStartPage() >1) {
73 return getStartPage() - 1;
74 } else {
75 return 1;
76 }
77
78 }
79 public int getNextPage() {
80 if (getStartPage() <= pageCount) {
81 return getStartPage() + 1;
82 } else {
83 return pageCount;
84 }
85 }
86 public int getStartPage() {
87 return startPage;
88 }
89 public void setStartPage(int startPage) {
90 int _pageCount = getPageCount();
91 if (startPage <=1) {
92 this.startPage = 1;
93 } else if (startPage > _pageCount) {
94 this.startPage = _pageCount;
95 } else {
96 this.startPage = startPage;
97 }
98 setStartIndex(indexes[this.startPage - 1]);
99 }
100
101 public int getStartIndex() {
102 return startIndex;
103 }
104
105 public void setStartIndex(int startIndex) {
106 this.startIndex = startIndex;
107 }
108
109 public int getTotalCount() {
110 return totalCount;
111 }
112
113 public int getPageSize() {
114 return pageSize;
115 }
116
117 public void setPageSize(int pageSize) {
118 this.pageSize = pageSize;
119 }
120
121 public int getPageCount() {
122 return pageCount;
123 }
124
125 public void setPageCount(int pageCount) {
126 this.pageCount = pageCount;
127 }
128 }
129
130 dao
131 public static PaginationSupport newsByMovie(final int startPage,final int pageSize){
132 Connection con = null;
133 PreparedStatement ps = null;
134 ResultSet rs = null;
135 PaginationSupport pageSupport = new PaginationSupport();
136 List items = new ArrayList();
137 try {
138
139 con = DbHelp.getConnection();
140 String sqlCount = "select count(1) from ent_news_prop " +
141 "t left outer JOIN ent_news ent on(t.new_id=ent.nid) ";
142 ps = con.prepareStatement(sqlCount);
143 rs = ps.executeQuery();
144 int totalCount = 0;
145 while(rs.next()){
146 totalCount = rs.getInt(1);
147 }
148 pageSupport.setPageSize(pageSize);
149 pageSupport.setTotalCount(totalCount);
150 pageSupport.setStartPage(startPage);
151 StringBuffer sb = new StringBuffer();
152 sb.append("SELECT * FROM ( SELECT tt.*,ROWNUM r FROM ( ");
153 String sql = "select t.new_id as newsId,t.movie_id as movieId,ent.title as title,ent.createdate as pubDate,ent.url url from ent_news_prop " +
154 "t left outer JOIN ent_news ent on(t.new_id=ent.nid) ";
155 sb.append(sql);
156 sb.append(") tt WHERE ROWNUM <= ? ) where r>= ? ");
157 ps = con.prepareStatement(sb.toString());
158 ps.setLong(1,pageSupport.getStartIndex()+pageSupport.getPageSize()-1);
159 ps.setLong(2,pageSupport.getStartIndex());
160 rs = ps.executeQuery();
161 MovieNews movieNews = null;
162 Date pubDate = null;
163 int i = 0;
164
165 while (rs.next()) {
166 movieNews = new MovieNews();
167
168 movieNews.setNewsId(rs.getInt("newsId"));
169 movieNews.setMovieId(rs.getInt("movieId"));
170 movieNews.setTitle(rs.getString("title"));
171 pubDate = (Date)rs.getDate("pubDate");
172 movieNews.setPubDate(f.format(pubDate));
173 movieNews.setUrl(rs.getString("url"));
174 items.add(movieNews);
175 }
176 pageSupport.setItems(items);
177 }catch(SQLException e){
178 e.printStackTrace();
179 }finally {
180 DbHelp.close(rs, ps, con);
181 }
182 return pageSupport;
183 }
getPageCount()总页数
getStartPage()当前页
getNextPage() 下一页
getPreviousPage() 上一页
isPages() 是否已经分页
getIsNextPage() 是否有下一页
getIsPreviousPage() 是否有上一页
getTotalCount()共有多少条
getItems() 结果集
setTotalCount(otalCount) 设置总行数
isPages() 是否有分页
191 getIsNextPage() 是否有下一页
192 getIsPreviousPage() 是否有上一页
193 getTotalCount()共有多少条
194 getItems() 结果集
195 setTotalCount(final int totalCount) 设置总行数> totalCount) 设置总行数
haohao
2008-07-22 16:24:21
评论:4
阅读:63
引用:0
无题
@2008-07-23 15:34:32 meiking
恩,呵呵。
无题
@2008-07-23 13:56:12 lunzi
应该是oracle数据库吧,mysql没有ROWNUM吧
无题
@2008-07-23 11:59:48 meiking
我看出来了,用的是mysql数据库。还是这种代码好懂,好久没碰java了感觉,愁死了。
无题
@2008-07-22 22:40:38 hofman
通用性不理想。我还是喜欢jboss seam的分页处理,非常简洁,不用返回到sql方式。
