好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

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

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

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

就如平時我們很在分頁中看到的,分頁的時候返回的不僅包括查詢的結果集(List),而且還包括總的頁數(pageNum)、當前第幾頁(pageNo)等等信息,所以我們封裝一個查詢結果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類。 

  我們以查詢用戶為例,用戶選擇查詢條件,首先調用Servlet獲取查詢參數,然后請求業務邏輯層取得分頁封裝結果類。業務邏輯調用Dao層取得結果集、取得中記錄數封裝成分頁類。最后Servlet將結果設置到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.取得頁面參數并構造參數對象 
 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.調用業務邏輯取得結果集 
 UserInfoManage userInfoManage = new UserInfoManage(); 
 PageModelUserInfo> pagination = userInfoManage.userBasicSearch(u, 
  pageNo, pageSize); 
 ListUserInfo> userList = pagination.getList(); 
 // 3.封裝返回結果 
 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; 
 } 
} 

接著是業務邏輯層代碼,代碼如下:

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為數據庫的連接封裝類。

最后是Dao層代碼實現,代碼如下: 

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將得到的結果返回給jsp頁面顯示出來。

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

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(); 
 } 
 } 
 // 封裝關閉Connection、PreparedStatement、ResultSet的函數 
 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是為了保證事務的一致,使得同一個線程的所有數據庫操作使用同一個Connection。

到此一個簡單的代碼實現就完成了。

總結

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

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

標簽:遼源 海東 中衛 寧波 昭通 自貢 百色 紹興

巨人網絡通訊聲明:本文標題《Oracle下的Java分頁功能_動力節點Java學院整理》,本文關鍵詞  Oracle,下的,Java,分頁,功能,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle下的Java分頁功能_動力節點Java學院整理》相關的同類信息!
  • 本頁收集關于Oracle下的Java分頁功能_動力節點Java學院整理的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 天天躁夜夜踩狠狠踩2022| 欧美xx性在线| 成年人免费观看视频网站| 美女裸体秘?无遮挡視頻视频网站漫画 | 放荡的闷骚娇妻| 国产精品亚洲AV三区八戒漫画| 亚洲国产天堂久久综合独居 | 国产片婬乱一级毛片视频接吻| 69式互舔| 一级做a爱过程免费视频时看| 女仆扒开腿秘?让人桶爽的作文| doi是什么意思| 丰满老女人A片免费观看| 强乱中文| 亚洲毛片一级在线免播放| 花蒂贴合磨腿根gl| 欧美综合图区亚洲综合图区| 亚洲 自拍 另类 欧美 丝袜| 一级做a爰片久久毛片无码免费 | 91精品啪在线观看国产| 春梦视频免费观看在线播放| 女子张腿男子捅| 黄色动作视频| 国产精品深爱在线| 穿书之高甜肉h| 国产人妖ⅠabybabyTS| 处破女| 第1章 饱满的乳峰喷奶水| 性做爰全过程免费看| 补课老师让我cao出水| 50度灰未删减版在线播放| 小芳公交车被做到高c的原因| 短篇高H黄暴辣H全文| 一品鲍app| 农里粗汉的共妻嗯啊高h| 天天看天天摸天天爽com| 王者荣耀貂蝉翻白眼流口水的表情| 国产一级婬片A片AAA毛片鲜肉| 日韩在线第二页| 黄色一级毛片视频| 久久午夜无码鲁片午夜精品男男|