婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Oracle下的Java分頁功能_動力節(jié)點Java學院整理

Oracle下的Java分頁功能_動力節(jié)點Java學院整理

熱門標簽:百度地圖標注注解 百度地圖標注飯店位置怎么 上海網(wǎng)絡外呼系統(tǒng) 區(qū)域地圖標注怎么設置 電話機器人那種好 地圖標注的坐標點 理財產(chǎn)品電銷機器人 外呼系統(tǒng)好點子 南通電銷外呼系統(tǒng)哪家強

就如平時我們很在分頁中看到的,分頁的時候返回的不僅包括查詢的結(jié)果集(List),而且還包括總的頁數(shù)(pageNum)、當前第幾頁(pageNo)等等信息,所以我們封裝一個查詢結(jié)果PageModel類,代碼如下:

package com.bjpowernode.test; 
import java.util.List; 
public class PageModelE> { 
 private ListE> list; 
 private int pageNo; 
 private int pageSize; 
 private int totalNum; 
 private int totalPage; 
 public ListE> getList() { 
 return list; 
 } 
 public void setList(ListE> list) { 
 this.list = list; 
 } 
 public int getPageNo() { 
 return pageNo; 
 } 
 public void setPageNo(int pageNo) { 
 this.pageNo = pageNo; 
 } 
 public int getPageSize() { 
 return pageSize; 
 } 
 public void setPageSize(int pageSize) { 
 this.pageSize = pageSize; 
 } 
 public int getTotalNum() { 
 return totalNum; 
 } 
 public void setTotalNum(int totalNum) { 
 this.totalNum = totalNum; 
 setTotalPage((getTotalNum() % pageSize) == 0 ? (getTotalNum() / pageSize) 
  : (getTotalNum() / pageSize + 1)); 
 } 
 public int getTotalPage() { 
 return totalPage; 
 } 
 public void setTotalPage(int totalPage) { 
 this.totalPage = totalPage; 
 } 
 // 獲取第一頁 
 public int getFirstPage() { 
 return 1; 
 } 
 // 獲取最后頁 
 public int getLastPage() { 
 return totalPage; 
 } 
 // 獲取前頁 
 public int getPrePage() { 
 if (pageNo > 1) 
  return pageNo - 1; 
 return 1; 
 } 
 // 獲取后頁 
 public int getBackPage() { 
 if (pageNo  totalPage) 
  return pageNo + 1; 
 return totalPage; 
 } 
 // 判斷'首頁'及‘前頁'是否可用 
 public String isPreable() { 
 if (pageNo == 1) 
  return "disabled"; 
 return ""; 
 } 
 // 判斷'尾頁'及‘下頁'是否可用 
 public String isBackable() { 
 if (pageNo == totalPage) 
  return "disabled"; 
 return ""; 
 } 
} 

  其中使用泛型是為了能使的該分頁類能進行重用,比如在查詢用戶時可以封裝User對象、在查詢財務中的流向單時可以封裝流向單FlowCard類。 

  我們以查詢用戶為例,用戶選擇查詢條件,首先調(diào)用Servlet獲取查詢參數(shù),然后請求業(yè)務邏輯層取得分頁封裝結(jié)果類。業(yè)務邏輯調(diào)用Dao層取得結(jié)果集、取得中記錄數(shù)封裝成分頁類。最后Servlet將結(jié)果設置到jsp頁面顯示。

  首先來講解Servlet,代碼如下:

package com.bjpowernode.test; 
import java.io.*; 
import java.util.*; 
import javax.servlet.ServletConfig; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import kane.UserInfo; 
import kane.UserInfoManage; 
import kane.PageModel; 
public class UserBasicSearchServlet extends HttpServlet { 
 private static final long serialVersionUID = 1L; 
 private int pageSize = 0; 
 @Override 
 public void init(ServletConfig config) throws ServletException { 
 pageSize = Integer.parseInt(config.getInitParameter("pageSize")); 
 } 
 @Override 
 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException { 
 doPost(req, resp); 
 } 
 @Override 
 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException { 
 // 1.取得頁面參數(shù)并構(gòu)造參數(shù)對象 
 int pageNo = Integer.parseInt(req.getParameter("pageNo")); 
 String sex = req.getParameter("gender"); 
 String home = req.getParameter("newlocation"); 
 String colleage = req.getParameter("colleage"); 
 String comingyear = req.getParameter("ComingYear"); 
 UserInfo u = new UserInfo(); 
 u.setSex(sex); 
 u.setHome(home); 
 u.setColleage(colleage); 
 u.setCy(comingyear); 
 // 2.調(diào)用業(yè)務邏輯取得結(jié)果集 
 UserInfoManage userInfoManage = new UserInfoManage(); 
 PageModelUserInfo> pagination = userInfoManage.userBasicSearch(u, 
  pageNo, pageSize); 
 ListUserInfo> userList = pagination.getList(); 
 // 3.封裝返回結(jié)果 
 StringBuffer resultXML = new StringBuffer(); 
 try { 
  resultXML.append("?xml version='1.0' encoding='gb18030'?>/n"); 
  resultXML.append("root>/n"); 
  for (IteratorUserInfo> iterator = userList.iterator(); iterator 
   .hasNext();) { 
  UserInfo userInfo = iterator.next(); 
  resultXML.append("data>/n"); 
  resultXML.append("/tid>" + userInfo.getId() + "/id>/n"); 
  resultXML.append("/ttruename>" + userInfo.getTruename() 
   + "/ truename >/n"); 
  resultXML.append("/tsex>" + userInfo.getSex() + "/sex>/n"); 
  resultXML.append("/thome>" + userInfo.getHome() + "/home>/n"); 
  resultXML.append("/data>/n"); 
  } 
  resultXML.append("pagination>/n"); 
  resultXML.append("/ttotal>" + pagination.getTotalPage() 
   + "/total>/n"); 
  resultXML.append("/tstart>" + pagination.getFirstPage() 
   + "/start>/n"); 
  resultXML.append("/tend>" + pagination.getLastPage() + "/end>/n"); 
  resultXML.append("/tpageno>" + pagination.getPageNo() 
   + "/pageno>/n"); 
  resultXML.append("/pagination>/n"); 
  resultXML.append("/root>/n"); 
 } catch (Exception e) { 
  e.printStackTrace(); 
 } 
 writeResponse(req, resp, resultXML.toString()); 
 } 
 public void writeResponse(HttpServletRequest request, 
  HttpServletResponse response, String result) throws IOException { 
 response.setContentType("text/xml"); 
 response.setHeader("Cache-Control", "no-cache"); 
 response.setHeader("Content-Type", "text/xml; charset=gb18030"); 
 PrintWriter pw = response.getWriter(); 
 pw.write(result); 
 pw.close(); 
 } 
} 

其中User對象代碼如下:

package com.bjpowernode.test; 
import java.util.Date; 
public class UserInfo { 
 private int id; 
 private String username; 
 private String password; 
 private String truename; 
 private String sex; 
 private Date birthday; 
 private String home; 
 private String colleage; 
 private String comingYear; 
 public int getId() { 
 return id; 
 } 
 public void setId(int id) { 
 this.id = id; 
 } 
 public String getUsername() { 
 return username; 
 } 
 public void setUsername(String username) { 
 this.username = username; 
 } 
 public String getPassword() { 
 return password; 
 } 
 public void setPassword(String password) { 
 this.password = password; 
 } 
 public String getTruename() { 
 return truename; 
 } 
 public void setTruename(String truename) { 
 this.truename = truename; 
 } 
 public String getSex() { 
 return sex; 
 } 
 public void setSex(String sex) { 
 this.sex = sex; 
 } 
 public Date getBirthday() { 
 return birthday; 
 } 
 public void setBirthday(Date birthday) { 
 this.birthday = birthday; 
 } 
 public String getHome() { 
 return home; 
 } 
 public void setHome(String home) { 
 this.home = home; 
 } 
 public String getColleage() { 
 return colleage; 
 } 
 public void setColleage(String colleage) { 
 this.colleage = colleage; 
 } 
 public String getCy() { 
 return comingYear; 
 } 
 public void setCy(String cy) { 
 this. comingYear= cy; 
 } 
} 

接著是業(yè)務邏輯層代碼,代碼如下:

package com.bjpowernode.test; 
import java.sql.Connection; 
import kane.DBUtility; 
import kane.PageModel; 
public class UserInfoManage { 
 private UserInfoDao userInfoDao = null; 
 public UserInfoManage () { 
 userInfoDao = new UserInfoDao(); 
 } 
 public PageModelUserInfo> userBasicSearch(UserInfo u, int pageNo, 
  int pageSize) throws Exception { 
 Connection connection = null; 
 PageModelUserInfo> pagination = new PageModelUserInfo>(); 
 try { 
  connection = DBUtility.getConnection(); 
  DBUtility.setAutoCommit(connection, false); 
  pagination.setList(userInfoDao.getUserList(u, pageNo, pageSize)); 
  pagination.setPageNo(pageNo); 
  pagination.setPageSize(pageSize); 
  pagination.setTotalNum(userInfoDao.getTotalNum(u)); 
  DBUtility.commit(connection); 
 } catch (Exception e) { 
  DBUtility.rollBack(connection); 
  e.printStackTrace(); 
  throw new Exception(); 
 } finally { 
  DBUtility.closeConnection(); 
 } 
 return pagination; 
 } 
} 

其中DBUtility為數(shù)據(jù)庫的連接封裝類。

最后是Dao層代碼實現(xiàn),代碼如下: 

package com.bjpowernode.test; 
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 kane.UserInfo; 
import kane.DBUtility; 
public class UserInfoDao { 
 public ListUserInfo> getUserList(UserInfo userInfo, int pageNo, 
  int pageSize) throws Exception { 
 PreparedStatement pstmt = null; 
 ResultSet rs = null; 
 ListUserInfo> userList = null; 
 try { 
  String sql = "select * from(select rownum num,u.* from(select * from user_info where sex = ? and home like '" 
   + userInfo.getHome() 
   + "%" 
   + "' and colleage like '" 
   + userInfo.getColleage() 
   + "%" 
   + "' and comingyear like '" 
   + userInfo.getCy() 
   + "%" 
   + "' order by id) u where rownum=?) where num>=?"; 
  userList = new ArrayListUserInfo>(); 
  Connection conn = DBUtility.getConnection(); 
  pstmt = conn.prepareStatement(sql); 
  pstmt.setString(1, userInfo.getSex()); 
  pstmt.setInt(2, pageNo * pageSize); 
  pstmt.setInt(3, (pageNo - 1) * pageSize + 1); 
  rs = pstmt.executeQuery(); 
  while (rs.next()) { 
  UserInfo user = new UserInfo(); 
  user.setId(rs.getInt("id")); 
  user.setTruename(rs.getString("truename")); 
  user.setSex(rs.getString("sex")); 
  user.setHome(rs.getString("home")); 
  userList.add(user); 
  } 
 } catch (SQLException e) { 
  e.printStackTrace(); 
  throw new Exception(e); 
 } finally { 
  DBUtility.closeResultSet(rs); 
  DBUtility.closePreparedStatement(pstmt); 
 } 
 return userList; 
 } 
 public int getTotalNum(UserInfo userInfo) throws Exception { 
 PreparedStatement pstmt = null; 
 ResultSet rs = null; 
 int count = 0; 
 try { 
  String sql = "select count(*) from user_info where sex=? and home like '" 
   + userInfo.getHome() 
   + "%" 
   + "' and colleage like '" 
   + userInfo.getColleage() 
   + "%" 
   + "' and comingyear like '" 
   + userInfo.getCy()+ "%" + "'"; 
  Connection conn = DBUtility.getConnection(); 
  pstmt = conn.prepareStatement(sql); 
  pstmt.setString(1, userInfo.getSex()); 
  rs = pstmt.executeQuery(); 
  if (rs.next()) { 
  count = rs.getInt(1); 
  } 
 } catch (SQLException e) { 
  e.printStackTrace(); 
  throw new Exception(e); 
 } finally { 
  DBUtility.closeResultSet(rs); 
  DBUtility.closePreparedStatement(pstmt); 
 } 
 return count; 
 } 
} 

最后就是servlet將得到的結(jié)果返回給jsp頁面顯示出來。

注:其中DBUtility代碼是封裝數(shù)據(jù)庫連接操作的代碼,如下:

1.package com.bjpowernode.test;    

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
public class DBUtility { 
 private static ThreadLocalConnection> threadLocal = new ThreadLocalConnection>(); 
 public static Connection getConnection() { 
 Connection conn = null; 
 conn = threadLocal.get(); 
 if (conn == null) { 
  try { 
  Class.forName("oracle.jdbc.driver.OracleDriver"); 
  conn = DriverManager.getConnection( 
   "jdbc:oracle:thin:@localhost:1521:oracle", "admin", 
   "admin"); 
  threadLocal.set(conn); 
  } catch (ClassNotFoundException e) { 
  e.printStackTrace(); 
  } catch (SQLException e) { 
  e.printStackTrace(); 
  } 
 } 
 return conn; 
 } 
 // 封裝設置Connection自動提交 
 public static void setAutoCommit(Connection conn, Boolean flag) { 
 try { 
  conn.setAutoCommit(flag); 
 } catch (SQLException e) { 
  e.printStackTrace(); 
 } 
 } 
 // 設置事務提交 
 public static void commit(Connection conn) { 
 try { 
  conn.commit(); 
 } catch (SQLException e) { 
  e.printStackTrace(); 
 } 
 } 
 // 封裝設置Connection回滾 
 public static void rollBack(Connection conn) { 
 try { 
  conn.rollback(); 
 } catch (SQLException e) { 
  e.printStackTrace(); 
 } 
 } 
 // 封裝關(guān)閉Connection、PreparedStatement、ResultSet的函數(shù) 
 public static void closeConnection() { 
 Connection conn = threadLocal.get(); 
 try { 
  if (conn != null) { 
  conn.close(); 
  conn = null; 
  threadLocal.remove(); 
  } 
 } catch (SQLException e) { 
  e.printStackTrace(); 
 } 
 } 
 public static void closePreparedStatement(PreparedStatement pstmt) { 
 try { 
  if (pstmt != null) { 
  pstmt.close(); 
  pstmt = null; 
  } 
 } catch (SQLException e) { 
  e.printStackTrace(); 
 } 
 } 
 public static void closeResultSet(ResultSet rs) { 
 try { 
  if (rs != null) { 
  rs.close(); 
  rs = null; 
  } 
 } catch (SQLException e) { 
  e.printStackTrace(); 
 } 
 } 
} 

使用ThreadLocal是為了保證事務的一致,使得同一個線程的所有數(shù)據(jù)庫操作使用同一個Connection。

到此一個簡單的代碼實現(xiàn)就完成了。

總結(jié)

以上所述是小編給大家介紹的Oracle下的Java分頁功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • java web手寫實現(xiàn)分頁功能
  • Java List分頁功能實現(xiàn)代碼實例
  • java ssm框架實現(xiàn)分頁功能的示例代碼(oracle)
  • Java實現(xiàn)簡單的分頁功能
  • javabean servlet jsp實現(xiàn)分頁功能代碼解析
  • 舉例詳解用Java實現(xiàn)web分頁功能的方法
  • Java簡單高效實現(xiàn)分頁功能

標簽:遼源 海東 中衛(wèi) 寧波 昭通 自貢 百色 紹興

巨人網(wǎng)絡通訊聲明:本文標題《Oracle下的Java分頁功能_動力節(jié)點Java學院整理》,本文關(guān)鍵詞  Oracle,下的,Java,分頁,功能,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Oracle下的Java分頁功能_動力節(jié)點Java學院整理》相關(guān)的同類信息!
  • 本頁收集關(guān)于Oracle下的Java分頁功能_動力節(jié)點Java學院整理的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美国产精品专区| 国产九色精品成人porny | 在线观看日韩av先锋影音电影院| 欧美激情一区二区三区四区 | 99九九99九九九视频精品| 亚洲3atv精品一区二区三区| 国产精品激情偷乱一区二区∴| www一区二区| 在线观看国产日韩| 波多野结衣在线一区| 蜜臀91精品一区二区三区| 亚洲午夜在线电影| 一区二区三区四区五区视频在线观看| 1000精品久久久久久久久| 欧美大片一区二区| 91精品国模一区二区三区| 色系网站成人免费| 一本色道久久综合亚洲aⅴ蜜桃| av不卡在线观看| 精品一区二区三区欧美| 蜜臀av亚洲一区中文字幕| 麻豆91在线播放免费| 奇米888四色在线精品| 日本成人超碰在线观看| 亚洲一级二级三级在线免费观看| 亚洲黄色免费网站| 亚洲高清免费观看| 美女视频黄频大全不卡视频在线播放| 开心九九激情九九欧美日韩精美视频电影 | 午夜欧美在线一二页| 亚洲视频图片小说| 综合激情网...| 亚洲综合清纯丝袜自拍| 亚洲欧美偷拍三级| 亚洲欧美日韩国产成人精品影院| 亚洲自拍偷拍av| 日韩av一级电影| 午夜精品国产更新| 蜜桃精品在线观看| 国内精品写真在线观看| www.成人网.com| 欧美在线观看你懂的| 欧美日韩午夜在线| 久久九九久精品国产免费直播| 中文字幕一区三区| 日本不卡视频在线观看| 国产激情一区二区三区四区 | 欧美三区在线观看| 精品国产一区二区三区不卡 | 国产精品激情偷乱一区二区∴| 亚洲欧美aⅴ...| 免费久久精品视频| 成人久久18免费网站麻豆 | 亚洲欧美怡红院| 一区二区三区在线视频免费| 麻豆freexxxx性91精品| 91麻豆成人久久精品二区三区| 日韩欧美在线综合网| 国产精品久久久99| 久久99精品一区二区三区三区| 在线欧美日韩国产| 国产精品视频线看| 狠狠色狠狠色综合系列| 欧洲人成人精品| 国产精品护士白丝一区av| 天堂在线一区二区| 成人精品小蝌蚪| 久久影院视频免费| 色狠狠桃花综合| 精品对白一区国产伦| 亚洲sss视频在线视频| 不卡在线观看av| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲伊人色欲综合网| 成人av在线一区二区| 久久青草欧美一区二区三区| 奇米色777欧美一区二区| 色综合天天综合在线视频| 精品成人免费观看| 一区二区三区不卡在线观看 | 精品一区二区三区在线观看国产| 99国产精品久久久久久久久久| 欧美岛国在线观看| 久久精品国产**网站演员| 91精品国产一区二区三区| 亚洲高清免费观看| 欧美日韩国产精选| 午夜精品一区二区三区免费视频 | 日韩国产欧美在线视频| 色综合网站在线| 一区二区三区在线视频免费| 色综合久久综合网97色综合| 国产午夜精品一区二区| 国产精品一区二区久久不卡 | 国产精品1区二区.| 亚洲精品在线一区二区| 狠狠色狠狠色综合| 久久久久久久久久久久电影| 夫妻av一区二区| 国产精品久久久久久久久动漫 | 91超碰这里只有精品国产| 一卡二卡三卡日韩欧美| 色欧美乱欧美15图片| 亚洲综合自拍偷拍| 欧美丰满高潮xxxx喷水动漫| 丝袜国产日韩另类美女| 日韩亚洲欧美综合| 国产自产2019最新不卡| 国产精品成人一区二区三区夜夜夜| av在线播放不卡| 亚洲激情中文1区| 777午夜精品免费视频| 老司机精品视频导航| 国产欧美一区二区在线| av不卡在线播放| 亚洲第一av色| 26uuu国产电影一区二区| 国产aⅴ精品一区二区三区色成熟| **性色生活片久久毛片| 555夜色666亚洲国产免| 麻豆精品国产91久久久久久| 久久久久国产精品麻豆| 日本精品一区二区三区高清| 日韩高清中文字幕一区| 国产欧美精品在线观看| 在线精品亚洲一区二区不卡| 久久超碰97人人做人人爱| 国产精品久久看| 欧美精品v国产精品v日韩精品 | 婷婷一区二区三区| 91精品国产综合久久久久久久| 久久91精品国产91久久小草 | 欧美综合天天夜夜久久| 麻豆精品在线观看| 国产精品久久免费看| 这里是久久伊人| 99精品视频一区二区| 免费成人av资源网| 国产精品国产精品国产专区不蜜| 在线一区二区三区| 蜜臀国产一区二区三区在线播放 | 在线视频你懂得一区二区三区| 麻豆国产精品视频| 一区二区三区四区激情| 久久亚洲私人国产精品va媚药| 国产视频一区二区在线观看| 色久综合一二码| 国产精品一品二品| 免播放器亚洲一区| 亚洲综合丁香婷婷六月香| 日本一区二区在线不卡| 日韩精品专区在线影院重磅| 欧洲色大大久久| 97国产精品videossex| 国产成人免费视频| 激情偷乱视频一区二区三区| 五月激情综合婷婷| 伊人色综合久久天天人手人婷| 久久这里都是精品| 91精品福利在线一区二区三区 | 欧美日韩高清一区二区不卡| 成人黄色一级视频| 蜜臀99久久精品久久久久久软件| 亚洲成人自拍网| 亚洲综合色在线| 一区二区三区四区蜜桃| 亚洲日本在线天堂| 1024亚洲合集| 日本一二三四高清不卡| 国产午夜精品一区二区三区嫩草| 日韩免费视频一区二区| 日韩一区和二区| 欧美一区二区三区视频免费| 欧美日韩三级在线| 欧美欧美欧美欧美首页| 欧美艳星brazzers| 欧美三级视频在线| 欧美日韩精品系列| 欧美一二区视频| 久久精品无码一区二区三区| 国产精品沙发午睡系列990531| 国产蜜臀97一区二区三区| 国产欧美视频一区二区三区| 亚洲国产精品精华液2区45| 国产欧美一区二区精品性| 国产日韩精品一区二区浪潮av| 久久久精品免费观看| 亚洲精品一区在线观看| 日本一区二区免费在线| 九一九一国产精品| 国产剧情av麻豆香蕉精品| 成人国产精品免费观看视频| 欧洲国产伦久久久久久久| 欧美一区二区三区免费视频| 精品va天堂亚洲国产| 国产精品午夜在线观看| 一区二区三区在线免费视频| 日韩高清欧美激情| 国产一区二区成人久久免费影院| 99视频在线观看一区三区|