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 }
184
185 [/code]
186 getPageCount()总页数
187 getStartPage()当前页
188 getNextPage() 下一页
189 getPreviousPage() 上一页
190 isPages() 是否已经分页
191 getIsNextPage() 是否有下一页
192 getIsPreviousPage() 是否有上一页
193 getTotalCount()共有多少条
194 getItems() 结果集
195 setTotalCount(final int totalCount) 设置总行数