只要太阳在,我就一直在.
---幸运皮
好久不写笔记了,不行不行,再不写就堕落了,哈哈.最近这几天写的分页比较多,昨天又做了一个搜索,把思路和核心代码记录一下.
首先说搜索吧,因为搜索主要是说说思路:
一.搜索.
以前的时候,做搜索,把搜索条件放到session里面,总觉得在写这样写的时候,是在偷着写,因为觉得,除了session里面放搜索条件外,肯定还有更标准的实现方式.正好昨天那么多大神都在,顺口问了一声,原来,小大神也是这样实现的,所以,我对自己以前的做法做了一下肯定.总结一下,就是这样:
ps: 一般在做应用的时候,index作为一页,展示为一页,有人把展示和index放在一起,这样最好不要,容易混乱.
首先,当用户输入搜索条件后,先把这些查询条件记录下来,也就是,放到session里面,记录查询条件,每次显示的时候,在session里面取值进行查询.
二.分页.
记得,一年前,做分页,小叶说:特别简单,我当时愁的要命,觉得,如果能写出分页程序来,那肯定就是大神了,现在看来,能写出分页程序的真的不一定是大神,哈哈.
分页其实很简单(现在来说),不过,对于分页来说,我们要考虑两种情况:
(一)较少数据分页
这种情况下,无所谓啦,把所有的数据一次性放到内存中,然后分页的时候再从其中取其实也是没关系的.
(二)较大数据量
对于这种情况,肯定是要考虑分页时候,内存中只加载当前页的数据了,我到现在接触到的有两种方法,一个是用sql语句中自带的方法加载(如:mysql中,用limit查询),另一个是用框架,接触到的有hibernate的分页查询功能.
而对于分页来说,其实无非就是这样:
int curpage = 0;//当前页
int pagesize = 20;//每页显示的条数
int from;
int allrows;//所有的条数
int allpages;//共多少页
allrows = AlumnusDAO.getRowsNumByInquiry(username);
allpages = allrows%pagesize==0?allrows/pagesize:allrows/pagesize+1;//共多少页
curpage = curpage<allpages?curpage:allpages;
curpage = curpage==0?1:curpage;
alulist = AlumnusDAO.getAllByInquiry(username,curpage,pagesize);
这样的话,类似一个工具了.