我使用的框架是springMVC+myBatis,数据库是mySql
首先来看一下用到的sql语句:
/先根据一个id条件,查询出总共多少条数据,在做计算的时候要用到,这里的topicId是我自己的查询条件,你们可根自己项目需求更改
SELECT COUNT(1) FROM bbs_topic_reply WHERE topicId=?
//做limit分页
SELECT * FROM bbs_topic_reply
WHERE topicId=?
ORDER BY createTime desc
LIMIT ?,?
第一步:建立VO
public class PageVo {
//当前第几页(前台传过来的)
private Integer pageNo;
//总共多少页(后台计算的)
private Integer totalPage;
//一共多少条数据(数据库查询的)
private Integer totalRecordSize;
}
第二步:dao层
//用来查询总共有多少条数据(count)
Integer pageCount(Integer topicId);
//做分页用的dao层方法
List findByTopicId(@Param("topicId") Integer topicId, @Param("page")Integer page, @Param("pageSize")Integer pageSize);
省略service层...
第三步:controller层
//这里的topicId是我自己where的查询条件,你们可根据自己的需求去写
//pageNo是前台传来的,当前是第几页
@RequestMapping(value = "pageList",method = RequestMethod.GET)
public void pageList(HttpServletResponse res,Integer topicId,IntegerpageNo)throws IOException{
pageVo= new PageVo();
//设置一共多少条数据
pageVo.setTotalRecordSize(topicReplyService.pageCount(topicId));
//设置总共多少页,按照每页显示10条来算
pageVo.setTotalPage(topicReplyService.pageCount(topicId)/10);
//sql语句中limit?,?的第一个问号,代表总共的数据中,从第几条开始显示,比如每页显示10条,那么翻到了第二 页,就要从第11条开始
Integer firstPage=(pageNo-1)*10;
//返回结果集
List pageVoList = topicReplyService.findByTopicId(topicId,firstPage,10);
res.setContentType("application/json");
//通过PrintWriter类将数据传到前台
Gson gson = new Gson();
String jsons = gson.toJson(pageVoList.toString());
PrintWriter printWriter = res.getWriter();
printWriter.print(jsons);
printWriter.flush();
printWriter.close();
}
第四步:页面通过ajax进方法:
这里用到了一个分页显示的插件jqPaginator,大家可以到某度搜索下载一下,非常好理解,实在不懂的可以留言给我
$(function(){
$('#comments-paginator').jqPaginator({
totalPages: 100,
visiblePages: 5,
currentPage: 1,
onPageChange: function (num, type) {
$.ajax({
url:"/wechat/bbs/pageList",
data:{"pageNo":num,"topicId":${topic.id}},
type:"GET",
contentType:"application/json",
success:function(data){
//重点说一下16-30行的代码,由于我们后台获得到的是一个list数组集,格式为[{},{}],取值比较麻烦,
//所以我们后台将这种格式,通过Gson转化为String,然后在前端通过下面的代码,转化为数组的形式,
//这段代码也是我//在网上千辛万苦找到的,但是忘记出处是哪里了,所以请原著大神看到,不要怪罪臣妾
//不过我也没看懂,会用就行,嘿嘿
var src= data;
var rObj = /{([^=]+=[^,]+),\s+([^={]+=[^,}]+)*/g
var m = src.match(rObj)
var rNvp = /([^,={\s]+=[^,]+)/g
var list = [];
for(var i=0;i
这是最后的样子: