How to design properly the logic of getting data from DB in the case of pagination (JAVA)? -
ok, building app in client , needs take data db. app won't take data db @ once based on pagination.
it has simple textbox user enter text , button search data.
requirements:
-if system downloaded data pageno, won't call server again.
-each time called server needs remember pageno, next time when user searching exact term search
pageno=pageno+1cos searchedpagenoalready.
so here did:
private hashmap<string, integer> wordpagenohashmap=new hashmap<string, integer>(); button.addclickhandler(new clickhandler(){ @override public void onclick(clickevent event) { int pageno=0; if(wordpagenohashmap.containskey(word)){ pageno=wordpagenohashmap.get(word); //note: page no increase if found result } else{ pageno=1; wordpagenohashmap.put(word, pageno); } calltodb(word,pageno); } }); public void resultfromdb(serverresult result){ int pageno=result.getpageno(); string word=result.getword(); list<string> textresult=result.getresult(); if(textresult!=null && textresult.size()>0){ pageno++; wordpagenohashmap.put(word, pageno); //show data here } else{ //show err here } } i putting pageno++ @ result not @ time call.
am designning ok?
or
can u better design?
assuming understanding correct, search query retrieve reasonable number of records db (say 500) , store in pagedlistholder , set per page data whatever number want(say 20).
now have 2 options, when user clicks next call nextpage() , retrieve data set. (this might applicable infinite loading)
or if user clicks on particular page number (conventional pagination), pass on page number setpage() method , retrieve elements page.
i have used pagedlistholder example make easy understand. may use similiar class if available, or can write one.
i think achieves objective of not hitting db same set of data.
let me know if helped.
Comments
Post a Comment