亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

java 簡潔的分層實現

2019-11-15 00:36:20
字體:
來源:轉載
供稿:網友
java 簡潔的分層實現

1.分頁實現

分頁實現是將所有查詢結果保存在session對象或集合中,翻頁時從session對象或集合中取出一頁所需的數據顯示。但是這種方法有兩個最主要的缺點:一是用戶看到的可能是過期數據;二是如果數據量非常大,查詢一次數據集會耗費很長時間,并且存儲的數據也會占用大量內存,效果明顯下降。

2.實現數據分頁顯示的步驟

(1)確定每頁顯示的數據數量。根據頁面的設計,確定在數據列表中每次顯示多少條記錄,也就是說每次從數據庫中需要查詢出多少條記錄用于頁面顯示,通常這個數量可以在開發時定義好,也可以通過用戶來確定。

(2)計算顯示的總頁數。既然要進行分頁顯示,還需清楚按照每頁顯示的數據庫記錄數量,計算出需要劃分的總頁數。由于在頁面中顯示的記錄數量是固定的,而數據庫中共存儲了多少條記錄是未知的,因此要想得到總頁數,需要以下步驟:

<1>首先要通過查詢獲取數據庫中總的記錄數,在SQL Server 數據庫中提供了count()聚合函數,借助count()聚合函數就可以獲取數據庫中記錄的總數,代碼如下所示:

定義新聞接口代碼如下。

public interface NewsDao{

public int getTotalCount();

}

新聞接口的實現類中獲取數據庫中記錄總數的代碼如下。

public class NewsDaoiple extends BaseDao implements NewsDao{

public int getTotalCount(){

int count =0;

String sql="select count(*) fro News";

              ......//省略執行代碼

              if(rs.next()){

              count=rs.getInt(1);

}

....//省略執行代碼

               returncount

}

}

從代碼中可以看出,當你執行使用了count()函數的SQL語句后,將獲得news表中的記錄總數,然后將其數據返回。

<2>有了數據庫記錄總數后,就可以根據每頁顯示的記錄數計算共需要劃分為多少頁,將有關分頁的數據封裝到page類,代碼如下:

      public class Page{

         //總頁數

         PRivate int totalPageCount=1;

//頁面大小,即每頁顯示記錄數

         private int pageSize=0;

//記錄總數

private int totalCount=0;

         //當前頁碼

         private int currPageNo=1;

         //每頁新聞集合

List<News> newsList;

.........//省略其他getter/setter()方法

         public int getCurrPageNo(){

if(totalPageCount==0)

                return 0;

return currPageNo;

          }

public void setCurrPageNo(int currPageNo){

            if(this.currPageNo>0)

               this.currPageNo = currPageNo;

}

public int getPageSize(){

return pageSize;

}

public void setPageSize(int pageSize){

if(pageSize>0)

this.pageSize = pageSize;

}

         public int getTotalCount(){

            return totalCount;

}

         public void setTotalCount(int totalCount){

             if(totalCount>0){

              this.totalCount = totalCount;

//計算總頁數

totalPageCount=this.totalCount%pageSize==0?(this.totalCount/pageSize) : this.totalCount/pageSize+1;

}

}

}

以上代碼設置記錄總數的setTotalCount()方法中,根據記錄總數和每頁顯示記錄數通過公式計算出總頁數,其使用了條件三元運算符 "? :" 的方式進行數據處理。如果記錄總數能被每頁顯示記錄數整除,則總頁數為兩者的商;如果不能被整除,則余出的記錄數單獨列為一頁,所以總頁數為兩者的商再加一。

  (3)編寫SQL語句。

《1》假如每頁顯示3條記錄,若要顯示第一頁的記錄,則:

String sql="select top 3 NID,NTITLE,NCREATEDATE from News"+" where NID not in (select top 0 NID from News)";

上述語句中top作用是限制返回的行數,此語句運用了兩層嵌套的查詢方式,內層的select語句是一條普通的返回限制行的查詢語句,他的執行結果實際上是為外層的select語句起到一個限制范圍的作用,其中數字0是起始行的下標,如顯示第一頁則從第一行開始查詢,即起始下標為0.而外層的select語句限制的行數實際上是每頁要顯示的記錄數,其執行結果就是從內層語句的查詢結果中按照起始行的下標取出前三條(每頁顯示的記錄數)。

起始行的下標 = (當前頁頁碼-1)* 每頁顯示的數據量

《2》String sql="select top "+pageSize+" NID,NTITLE,NCREATEDATE from News"+"where NID not in(select top "+(currPageNo-1)* pageSize+"NID from News )";

pageSize 表示每頁顯示的記錄數,而currPageNo 變量表示當前頁的代碼。

定義新聞接口的代碼如下:

    public interface NewsDao{

      public int getTotalCount();

      public List<News> getPageNewsList(int pageNo,int pageSize);

}

新聞接口的實現類中獲得每頁新聞集合代碼如下:

public class NewsDaoImple extends BaseDao implements NewsDao{

.....//省略查詢數據庫中記錄總數的代碼

public List<News> getPageNewsList(int pageNo,int pageSize){

          List<News> newslist=new ArrayList<News>();

Connection con=this.getConnection();

          PreparedStatement ps=null;

ResultSet rs=null;

String sql="select top "+pageSize+"NID,NTITLE,NCREATEDATE from News where NID not in "+"(select top "+(pageNo-1)*pageSize+"NID from News"+"order by NCREATEDATE desc) order by NCREATEDATE desc";

.......//省略其他執行代碼

return newslist;

}

}

向頁面顯示信息:

public class NewsDAoImple extends BaseDao implements NewsDao{

..........//省略其他代碼實現

public static void main(String[] args){

NewsDaoImple news =new NewsDaoImple();

int totalCount=news.getTotalCount();

              Page page =new Page();

page.setCurrPageNo(1); //設置當前頁面

              page.setPageSize(3); //設置每頁條數

              page.setTotalCount(totalCount); //設置總數量

System.out.println("新聞總數量是:"+page.getTotalCount());

              System.out.println("每頁條數是:" +page.setPageSize(););

              System.out.println("總頁數:"page.getTotalPageCount());

              System.out.println("當前是第"+page.getCurrPageNo()"頁");

List<News> newslist=news.getPageNewsList(page.getCurrPageNo(), page.getPageSize());

              page.setListNews(newslist);

              for(News news:page.getListNews()){

                System.out.println(news.getNid()+"/t"+news.getNtitle()+"/t"+news.getNcreatedate());

}

}

}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲黄色免费三级| 一本大道久久加勒比香蕉| 国产在线视频不卡| 欧美日韩国产影院| 91精品久久久久久久久久久久久| 亚洲国产精品成人va在线观看| 国产精品免费久久久| 欧美一区亚洲一区| 日韩风俗一区 二区| 91精品国产91久久久| 欧美精品在线播放| 国产激情视频一区| 国产精品com| 91沈先生在线观看| 国产91热爆ts人妖在线| 国产精品久久久亚洲| 国外成人在线视频| 久久视频免费在线播放| 在线国产精品播放| 欧美黄色性视频| 国产日产欧美a一级在线| 国产视频精品久久久| 国产+成+人+亚洲欧洲| 亚洲人成网站免费播放| 国产精品2018| 国内免费久久久久久久久久久| 国产精品白嫩初高中害羞小美女| 亚洲最新av网址| 国产精品扒开腿做爽爽爽男男| 亚洲黄一区二区| 美女视频黄免费的亚洲男人天堂| 精品夜色国产国偷在线| 欧美视频中文在线看| 亚洲毛片一区二区| 欧美精品免费播放| 黄色一区二区在线观看| 91日韩在线播放| 亚洲国内精品视频| 成人福利视频网| 亚洲精品国产精品国自产观看浪潮| 91成品人片a无限观看| 国产精品久久二区| 亚洲性日韩精品一区二区| 亚洲国产精品国自产拍av秋霞| 亚洲a级在线播放观看| 欧美日韩免费网站| 亚洲性无码av在线| 成人黄色在线观看| 国产精品成人一区二区| 国产精品十八以下禁看| 精品美女永久免费视频| 日韩av免费看网站| 国产成人综合亚洲| xvideos成人免费中文版| 亚洲缚视频在线观看| 国产精品久久久久久影视| 亚洲色图综合网| 久久69精品久久久久久久电影好| 欧美精品久久久久久久免费观看| 色午夜这里只有精品| 91国产一区在线| 国产剧情久久久久久| 久久综合电影一区| 欧美激情乱人伦| 国产精品久久久久免费a∨| 一区二区日韩精品| 国产精品国产三级国产aⅴ浪潮| 欧美性猛交xxxx黑人猛交| 97热在线精品视频在线观看| 久久久人成影片一区二区三区| 中文字幕精品在线| 日韩精品视频在线| 爽爽爽爽爽爽爽成人免费观看| 国产中文欧美精品| 菠萝蜜影院一区二区免费| 亚洲欧洲自拍偷拍| 欧美专区福利在线| 久久精品国产综合| 色噜噜狠狠狠综合曰曰曰| 日本乱人伦a精品| 国产精品影院在线观看| 91系列在线播放| 久久久精品免费| 亚洲免费伊人电影在线观看av| 亚洲精品小视频在线观看| 亚洲一区二区三区久久| www国产精品com| 欧美大片欧美激情性色a∨久久| 伊人成人开心激情综合网| www.日本久久久久com.| 久久精品国产一区二区三区| 亚洲国产又黄又爽女人高潮的| 中文字幕久热精品在线视频| 国产在线精品成人一区二区三区| 欧美性猛交xxxx富婆| 欧美精品第一页在线播放| 亚洲第一中文字幕在线观看| 国产精品第10页| 久久久久久久久久婷婷| 国产精品青草久久久久福利99| 久久99久久99精品免观看粉嫩| 欧美性猛交xxxx富婆弯腰| 日韩成人在线电影网| 国产成人精品国内自产拍免费看| 亚洲天堂av图片| 欧美极品少妇全裸体| 91理论片午午论夜理片久久| 日韩综合中文字幕| 中文字幕在线视频日韩| 亚洲国产精品推荐| 一本色道久久88精品综合| 国产精品成人一区二区三区吃奶| 色综合久综合久久综合久鬼88| 精品国产一区二区三区在线观看| 成人激情视频小说免费下载| 91免费高清视频| 国产在线日韩在线| 亚洲精选中文字幕| 777国产偷窥盗摄精品视频| 色爱av美腿丝袜综合粉嫩av| 午夜精品久久久久久久99热| 亚洲福利视频免费观看| 日韩电影免费在线观看中文字幕| 亚洲性av在线| 91亚洲va在线va天堂va国| 久久韩国免费视频| 亚洲人成电影网站色www| 日韩免费黄色av| 欧美精品在线看| 亚洲精品综合精品自拍| 欧美伦理91i| 国产91亚洲精品| 久久久天堂国产精品女人| 美女福利视频一区| 欧美日韩美女在线| 亚洲色图狂野欧美| 欧美另类极品videosbestfree| 亚洲欧美999| 久久亚洲电影天堂| 欧美限制级电影在线观看| 亚洲国产成人爱av在线播放| 国产成人av网| 欧美综合国产精品久久丁香| 深夜福利日韩在线看| 日韩欧美中文第一页| 97高清免费视频| 国产精品第三页| 久久精品在线视频| 国语自产精品视频在线看抢先版图片| 国产精品中文字幕在线观看| 国产精品久久婷婷六月丁香| 国产成人亚洲综合91精品| 欧美剧在线观看| 81精品国产乱码久久久久久| 97国产精品人人爽人人做| 国产精品老女人视频| 在线观看精品自拍私拍| 国产成人精品电影久久久| 欧美午夜www高清视频| 91欧美精品午夜性色福利在线| 欧美午夜片欧美片在线观看| 国产精品99久久久久久久久久久久| 中文字幕av一区二区| 精品香蕉在线观看视频一|