1、Service类分页代码
/**
* 功能:分页查询一级栏目下所有子栏目下的新闻
* param:
* parent_id 一级栏目id
* page 第几页 pagesize 每页记录数
* return NewsExt对象组成的数组
*/
public ArrayList<News> selectByPage(int parent_id, int page, int pagesize) {
ArrayList<News> arr = new ArrayList<News>();
Connection conn = null;
try {
conn = DbConn.getConn();
int start = (page - 1) * pagesize;
// String sql = "select * from tb_menu where menu_name like '%?%'
// menu_id asc limit (?-1)*?,?";
String sql = "SELECT * FROM tb_news WHERE cat_id IN (SELECT cat_id FROM tb_category WHERE parent_id="+parent_id+") order by news_id desc limit "
+ start + "," + pagesize;
System.out.println("sql:" + sql);
PreparedStatement pstmt = conn.prepareStatement(sql);
// pstmt.setString(1, menu_name);
// pstmt.setInt(2, page);
// pstmt.setInt(3, pagesize);
// pstmt.setInt(4, pagesize);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
News news = new News();
news.setNews_id(rs.getInt("news_id"));
news.setCat_id(rs.getInt("cat_id"));
news.setTitle(rs.getString("title"));
news.setUrl(rs.getString("url"));
news.setTitle_pic(rs.getString("title_pic"));
news.setDescription(rs.getString("description"));
news.setContent(rs.getString("content"));
news.setIs_top(rs.getShort("is_top"));
news.setIs_recommend(rs.getShort("is_recommend"));
news.setCreate_time(rs.getLong("create_time"));
news.setUpdate_time(rs.getLong("update_time"));
news.setView_nums(rs.getLong("view_nums"));
arr.add(news);
}
rs.close();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
DbConn.close(conn);
}
return arr;
}
/*
* 功能:分页查询一级栏目下所有子栏目下的新闻记录总数
* param:
* parent_id 一级栏目id
* return 符合条件的总记录数
*/
public int selectCount(int parent_id) {
int rs_count = 0;
Connection conn = null;
try {
conn = DbConn.getConn();
String sql = "SELECT count(1) as rs_count FROM tb_news WHERE cat_id IN (SELECT cat_id FROM tb_category WHERE parent_id="+parent_id+") order by news_id desc";
System.out.println("selectCount sql:" + sql);
PreparedStatement pstmt = conn.prepareStatement(sql);
// pstmt.setString(1, menu_name);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
rs_count = rs.getInt("rs_count");
}
rs.close();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
DbConn.close(conn);
}
return rs_count;
}
2、jsp页面中的分页代码
//分页查询
NewsService newsService = new NewsService();
int pagenow=1; //当前第几页
String pagenow_str = request.getParameter("pagenow");
if(pagenow_str != null && !pagenow_str.isEmpty() ){
pagenow = Integer.parseInt(pagenow_str);
}
//每页记录数
int pageSize = 2 ;
//查询当前页的记录
ArrayList<News> list = newsService.selectByPage(16,pagenow,pageSize);
//总记录数
int rowCount = newsService.selectCount(16);
显示分页导航:
<%
if(pagenow>1) {
%>
<a href=case.jsp?pagenow=<%=pagenow-1%> >【 上一页 】 </a>
<%
}else{
%>
<a href=case.jsp?pagenow=<%=pagenow%> >【 上一页 】 </a>
<%
}
%>
<%
int pagenum = rowCount/pageSize ;
if( rowCount % pageSize != 0 ) pagenum++ ;
for( int i=1 ; i<=pagenum ; i++ ){
%>
<a href=case.jsp?pagenow=<%=i %> >【<%=i %>】</a>
<%
}
if( pagenow < pagenum ){
%>
<a href=case.jsp?pagenow=<%=1+pagenow%> >【 下一页 】 </a>
<% }else{ %>
<a href=case.jsp?pagenow=<%=pagenow%> >【 下一页 】 </a>
<% }%>
新蔷程序员特训营,带领初学者快速开发商业项目:https://paishenwx.taobao.com/