我以前做过商城项目,项目中有一个小功能,但是很折磨人,那就是分页。
今天我们就看看分页是怎么写的。
在我的数据库中有一个user表,在表中插入多条数据。(多查几条,别没分几页就没数据了)。
这个是我的SSM工程的类分布。可以参考一下。
做分页之前,我们要创建一个Page类,这个类中写上分页需要的属性。然后实现getter和setter方法。
看一下上面的page类。这个类中,我分别写了五个属性(当前页,每页条数,总页数,总行数,下标 )。
(1)我们要在currentPage后面附上初始值=1,告诉他我要显示第一页的数据。
(2)在pageSize后面附上每页要显示的每页显示多少条数据。(我数据有限就写了两条,大家根据自己的需求定义)。
(3)totalPage是要根据 查询出来的rows的数量,再来进一步计算totalPage的数量。我们在totalPage的getter方法中
加上计算。
(4)rows在上面也说了,等会是要从数据库中查出具体的行数(多少条数据)。
(5)begin,我们要用到下标去数据库中去数据。limit 0,2 【0是指起始行,2是指要查多少条数据】。
我们来细看一下begin的getter方法中的算法:begin = (currentPage-1)* pageSize
currentPage我们设置了一个默认值是1,他就会查出下标为 [ (1-1) *2 } 的(pageSize)条数据。让你点击分页下的其他
页数(假如点了第5页),前台就会传给controller一个currentPage=5的值,
再根据算法 (5-1)* pageSize (按我每页显示的条数2,来计算,就是下标为8的后两条数据)。以此类推
我已经说的很细了啊,你们要是还不懂就自己在设想几个数,推一推!!!
这个是我的UserMapper.xml文件中的sql语句。
这个是我的Controller层。里面有注释就不需要我多解释了。
这个是list.jsp界面,看一下,很容易理解。
显示出来的页面,当然都是可以点的啊,也能实现想要的效果。
我只是简单的告诉大家,分页的逻辑。我写的这个页面也不是很完善。望谅解