Jive(J道)升級通知(又一資料庫批次查詢方法應用)
Jive(J道)升級通知(又一資料庫批次查詢方法應用)
今天更新升級了jive(J道)1.1版:
1. 將global.jsp程式碼重構,每個使用者採取session儲存FourmFactory,原來是每次Jsp頁面產生時才即時產生,我認為耗時浪費CPU,增加了com.jdon.web.UserEnvFront類,用來儲存執行期間的一些重要資料。
使用com.jdon.web.DisplayUtil將原來global.jsp中討厭的有關顯示的方法全部包裝進去,我真看不慣Jsp中寫Java方法的,簡直會誤人子弟。
2.增加使用者所有明細貼查詢,只要點按使用者名稱,就可以查詢出他的所有發貼明細,我認為這個功能很重要,可以讓後來者對其他參與者的發言情況有詳細瞭解,並有助於搜尋資訊(只要大概記住是誰發表的就可以)。
由於Jive中的thread頁面顯示是採取filter的decorator模式,總體思路是這樣:
在forum.threads(filter)裡的做法是,根據filter動態重組成SQL語句,查詢得到頁面的所有ID集合(不是所有記錄),返回ForumMessageBlockIterator這是類似Pet Store中的Page類(Page by page iterator模式),注意ForumMessageBlockIterator與DatabaseObjectIterator是有區別的:
前者是一個頁面中的iterator,並且加入使用者許可權驗證Proxy,後者是通用的一般Iterator,主要是Jive的使用者管理模組用的比較多。
增加使用者所有明細貼查詢這一功能,看似容易,實際有點小技巧,本來想使用Forum.jsp中顯示thread那樣的頁面排序法,但是由於這種方法是使用filter確定出運算元據庫的SQL語句,根據這個模式走下去,還要構造ForumMessagIteartor這樣新類(可以參考ForumThreadIteartor),當時我覺得沒有必要。
前面討論過,資料庫批次查詢有兩種方法,一種是Jive裡上面的方法,一種是Pet Store中的方法,那麼這裡我就搬遷了Pet Store中的方法,改造後的DbUserManager的userMessages(User user)為下面:
目前上述更改已經上傳CVS伺服器。
今天更新升級了jive(J道)1.1版:
1. 將global.jsp程式碼重構,每個使用者採取session儲存FourmFactory,原來是每次Jsp頁面產生時才即時產生,我認為耗時浪費CPU,增加了com.jdon.web.UserEnvFront類,用來儲存執行期間的一些重要資料。
使用com.jdon.web.DisplayUtil將原來global.jsp中討厭的有關顯示的方法全部包裝進去,我真看不慣Jsp中寫Java方法的,簡直會誤人子弟。
2.增加使用者所有明細貼查詢,只要點按使用者名稱,就可以查詢出他的所有發貼明細,我認為這個功能很重要,可以讓後來者對其他參與者的發言情況有詳細瞭解,並有助於搜尋資訊(只要大概記住是誰發表的就可以)。
由於Jive中的thread頁面顯示是採取filter的decorator模式,總體思路是這樣:
//準備好結果ResultFilter ResultFilter filter = new ResultFilter(); filter.setStartIndex(start); filter.setNumResults(range); 。。。。。。 //得到某個頁面的所有thread ForumThreadIterator threads = forum.threads(filter); <p class="indent"> |
在forum.threads(filter)裡的做法是,根據filter動態重組成SQL語句,查詢得到頁面的所有ID集合(不是所有記錄),返回ForumMessageBlockIterator這是類似Pet Store中的Page類(Page by page iterator模式),注意ForumMessageBlockIterator與DatabaseObjectIterator是有區別的:
前者是一個頁面中的iterator,並且加入使用者許可權驗證Proxy,後者是通用的一般Iterator,主要是Jive的使用者管理模組用的比較多。
增加使用者所有明細貼查詢這一功能,看似容易,實際有點小技巧,本來想使用Forum.jsp中顯示thread那樣的頁面排序法,但是由於這種方法是使用filter確定出運算元據庫的SQL語句,根據這個模式走下去,還要構造ForumMessagIteartor這樣新類(可以參考ForumThreadIteartor),當時我覺得沒有必要。
前面討論過,資料庫批次查詢有兩種方法,一種是Jive裡上面的方法,一種是Pet Store中的方法,那麼這裡我就搬遷了Pet Store中的方法,改造後的DbUserManager的userMessages(User user)為下面:
public Iterator userMessages(User user,int start, int count) { LongList messages = new LongList(); Connection con = null; PreparedStatement pstmt = null; int total =userMessageCount(user) ; try { con = ConnectionManager.getConnection(); pstmt = con.prepareStatement(ALL_USER_MESSAGES); pstmt.setLong(1, user.getID()); ResultSet rs = pstmt.executeQuery(); if (start >= 0 && start < total) { //使用Pet Store的rs定位 rs.absolute(start+1); do { messages.add(rs.getLong(1)); } while (rs.next() && (--count > 0)); } } catch( SQLException sqle ) { sqle.printStackTrace(); } finally { try { pstmt.close(); } catch (Exception e) { e.printStackTrace(); } try { con.close(); } catch (Exception e) { e.printStackTrace(); } } return new DatabaseObjectIterator(JiveGlobals.MESSAGE, messages.toArray(), factory); } <p class="indent"> |
目前上述更改已經上傳CVS伺服器。
相關文章
- 關於資料庫批次查詢的一個想法資料庫
- rac 升級crs 升級資料庫軟體,升級資料庫資料庫
- 上億級別資料庫查詢資料庫
- JIVE用MYSQL資料庫的問題(菜鳥級)MySql資料庫
- 谷歌收錄批次查詢,教你批次查詢谷歌收錄的方法谷歌
- django對資料庫查詢基本方法Django資料庫
- 資料庫升級資料庫
- ♀♀資料庫升級♀♀資料庫
- 谷歌收錄批次查詢,谷歌收錄批次查詢的方法步驟谷歌
- 基於MSSQLSQL資料庫大批次資料的分塊分頁查詢SQL資料庫
- 資料庫查詢資料庫
- 資料庫 - 資料查詢資料庫
- 資料庫資料的查詢----連線查詢資料庫
- Android SQL資料庫查詢方法 query( )AndroidSQL資料庫
- 優化SQL Server資料庫查詢方法優化SQLServer資料庫
- Oracle 資料庫升級Oracle資料庫
- ZT 升級和移植Oracle資料庫方法若干Oracle資料庫
- 資料庫升級之-Dataguard滾動升級資料庫
- 求教 j2ee 查詢資料庫的具體實現資料庫
- 5道較難的資料庫查詢習題(Intermediate SQL)資料庫SQL
- QL Server 百萬級資料提高查詢速度的方法Server
- 資料庫高階查詢之子查詢資料庫
- 資料庫升級之-資料泵資料庫
- 求助:資料庫查詢資料庫
- ThinkPHP 資料庫查詢PHP資料庫
- 查詢資料庫大小資料庫
- 資料庫排序查詢資料庫排序
- Jemter查詢資料庫資料庫
- Oracle資料庫升級或資料遷移的方法探討Oracle資料庫
- 資料庫升級和工具資料庫
- 資料庫升級之-XTTS資料庫TTS
- 資料庫升級報錯資料庫
- 用DELPHI製作線上程式升級資訊查詢 (轉)
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- jive資料庫配置資料庫
- 資料庫基礎查詢--單表查詢資料庫
- 資料庫查詢優化:巢狀查詢資料庫優化巢狀
- 資料庫查詢工具:RazorSQL mac啟用版資料庫SQLMac