任何一個封裝講究的是,實用,多狀态。
action:
任何一個action繼承分頁有關參數類pagemanage,自然考慮的到分頁效果,我們必須定義下幾個分頁的參數。并根據這個參數進行查值。
然後在繼承servicemanage,servicemanage類是用來 存放共用的東西:response,重要的是service的get set
具體講一下pagemanage,
totalpages;//總頁數
totalrecord;//總記錄數
showrecordnum=default_page_num;//每頁顯示記錄數
showpagenum;//目前頁顯示的記錄數量
其中涉及到的 pageutil,這就分頁的參數設定,和進行分頁功能的一些邏輯判斷,邏輯變動。
pageutil:
pageutil(integer currentpage,integer totalrecord,int showrecordnum)這個定義了一個page 以後調用就這個。
//分頁用到的基本兩個參數:1.總的記錄條數 2.每頁的記錄條數
default_current=1; //預設顯示第一頁
default_page_num=20;//預設顯示20條記錄
pagefirrecord=0;//目前頁第一條記錄
currentpage=1;//目前頁數
totalpages;//總頁數
totalrecord;//總記錄數
showrecordnum=default_page_num;//每頁顯示記錄數
showpagenum;//目前頁顯示的記錄數量
prepage=1;
nexepage=1;
然後講service層:
隻要繼承一個父類curds;curds類裡面的方法和封裝好的dao層hibernate帶分頁的分裝方法一緻
随便一個service層接口:
一般的方法自然都在curds有了。以下是寫一個特殊的方法
list<authapply> getapplie():
是以一般來說,curds裡面的方法夠用了。
curds: 裡面的方法是service共用的方法
/**
* 根據條件集合大小,這裡使用java 1.5引入的新特性:可變參數
* */
public int getnums(object ...args);
* 根據條件集合
public list<t> getlist(pageutil pageutil, object ...args);
* 儲存對象
public t makepersitent(t entity);
* 根本編号獲得對象
public t findbyid(integer id);
service層實作:
共用的curds接口裡面的方法裡面如果要用就實作,不用不需要
daomanage:隻是dao接口的注入
下面看一下 dao層的封裝吧。
經典的終于來了。前面注意分頁的那些類:
首先 因為有一些是特殊的方法,是以我們也要定義
authapplyd接口:很簡單吧。
authapply 是bean類
genericdao 這繼承的父類就是我們的封裝。
authapplyd實作類:
super(authapply.class);這個方法很重要,調用的是generichibernatedao的方法,而将bean類傳到dao層。
genericdao接口封裝:
這才是我想說的經典
* 通過id獲得實體對象
*
* @param id實體對象的辨別符
* @return 該主鍵值對應的實體對象
*/
t findbyid(integer id);
t findbyid(long id);
* 将實體對象持久化
* @param entity 需要進行持久化操作的實體對象
* @return 持久化的實體對象
t makepersitent(t entity);
* 将實體變為瞬态
* @param entity需要轉變為瞬态的實體對象
void maketransient(t entity);
* 将一系列的實體變為瞬态,使用本地sql
* @param hql
void maketransientbyids(string sql);
* 使用hql語句進行分頁操作
* @param offset第一條記錄索引
* @param pagesize每頁需要顯示的記錄數
* @return查詢的記錄
list<t> findbypage(final string hql,final int offset,final int pagesize);
* 使用hql 語句進行分頁查詢操作
* @param hql 需要查詢的hql語句
* @param value 如果hql有一個參數需要傳入,value就是傳入的參數
* @param offset 第一條記錄索引
* @param pagesize 每頁需要顯示的記錄數
* @return 目前頁的所有記錄
list<t> findbypage(final string hql , final object value ,
final int offset, final int pagesize);
* @param values 如果hql有一個參數需要傳入,value就是傳入的參數
list<t> findbypage(final string hql, final object[] values,
* 使用sql 語句進行分頁查詢操作
* @param sql
* @param offset
* @param pagesize
* @return
list<t> findbypagesql(final string sql,
* 根據語句查找總數
* @param hql hql語句
* @return 對應的數目
integer getcount(string hql);
void updateobj(final string hql,final object[] values);
* 更新
void updateentity(t entity);
* 傳回list集合
@suppresswarnings("unchecked")
public list getlistdatabyhql(string hql);
* hql查詢單個字段
public list<object> findsingledatabyhql(string hql);
* hql查詢多個字段
public list<object[]> findsomedatabyhql(string hql);
}
generichibernatedao實作類:
希望首頁能再次通過,我修改下。
總結:帶分頁功能的ssh整合,dao層經典封裝
考慮前台,一條線的傳到背景,然後分工必須明确。
dao層的封裝,可見java底層的魅力。