天天看點

關于dao層的封裝和前端分頁的結合(文章有點長,耐心點哦)

任何一個封裝講究的是,實用,多狀态。

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底層的魅力。