bs_pagination插件是前端插件:使用步骤可以参考:
https://blog.csdn.net/weixin_54401017/article/details/125084478
bs_pagination插件的官方使用文档:
https://labs.pontikis.net/bs_pagination/docs/
分析:分页查询是局部刷新页面所以需要用到异步请求
前端搜集到参数后通过异步请求发送给controller层,控制层在调服务层,服务层在调用mapper,mapper查询到结果后依次返回给controller层,最后返回给前台。
mapper层:可以看看(sql语句):https://blog.csdn.net/weixin_54401017/article/details/125106203
service层:
@Override
public int queryCountOfActivityByCondition(Map<String, Object> map) {
return activityMapper.selectConuntOfActivityByCondition(map);
}
controller层:
@RequestMapping("/workbench/activity/queryActivityByConditionForPage.do")
@ResponseBody
public Object queryActivityByConditionForPage(String name,String owner,String startdate,String enddate,int pageNo,int pageSize){
//封装参数
Map<String,Object> map = new HashMap<>();
map.put("activityName",name);
map.put("owner",owner);
map.put("startDate",startdate);
map.put("endDate",enddate);
map.put("beginNo",(pageNo-1)*pageSize);
map.put("pageSize",pageSize);
//调用Service层方法
List<Activity> activityList = activityService.queryActivityByConditionForPage(map);
int totalRows = activityService.queryCountOfActivityByCondition(map);
System.out.println("++++_______________++++");
System.out.println(activityList.toString());
System.out.println(totalRows);
//根据查询结果,生成响应信息
Map<String,Object> retMap = new HashMap<>();
retMap.put("activityList",activityList);
retMap.put("totalRows",totalRows);
return retMap;//会自动转成json字符串 实体类也是自动转换成json字符串(集合,数组,实体类,基本数据类型)
}
jsp中:这里理解$.each()与jstl中foreach的区别:简单解释是jstl中的foreach主要用于作用域中的数据。
function queryActivityByConditionForPage(pageNo,pageSize) {
//收集参数
var activityName = $("#query-name").val();
var owner = $("#query-owner").val();
var startDate = $("#query-startDate").val();
var endDate = $("#query-endDate").val();
//var pageNo = 1;
//var pageSize=10;//默认为10条
//发送异步请求
$.ajax({
url: 'workbench/activity/queryActivityByConditionForPage.do',
data:{
name:activityName,
owner:owner,
startdate:startDate,
enddate:endDate,
pageNo:pageNo,
pageSize:pageSize,
},
type: 'post',
dataType: 'json',
success:function (data) {
//$("#totalRowsB").text(data.totalRows);//显示总条数
//显示市场活动列表
//遍历activityList,显示所有行数据
var htmlStr = "";
$.each(data.activityList,function (index,obj) {
htmlStr+="<tr class=\"active\">"
htmlStr+="<td><input type=\"checkbox\" value=\""+obj.id+"\" /></td>";
htmlStr+="<td><a style=\"text-decoration: none; cursor: pointer;\" onclick=\"window.location.href='detail.html';\">"+obj.name+"</a></td>";
htmlStr+="<td>"+obj.owner+"</td>";
htmlStr+="<td>"+obj.startdate+"</td>";
htmlStr+="<td>"+obj.enddate+"</td>";
htmlStr+="</tr>";
});
$("#tBody").html(htmlStr);
//计算总页数
var totalPages = 1;
if (data.totalRows%pageSize==0){
totalPages=data.totalRows/pageSize;
}else {
totalPages=parseInt(data.totalRows/pageSize)+1;
}
//对容器调用bs_pagination工具函数,显示翻页信息
$("#demo_pag1").bs_pagination({
currentPage:pageNo,//当前的页号
rowsPerPage:pageSize,//每页显示条数
totalRows:data.totalRows,//总条数
totalPages:totalPages,//总页数
visiblePageLinks: 5,//最多可以显示的卡片数
showGoToPage: true,//是否显示“跳转到”部分,默认true,--显示
showRowsPerPage: true,//是否显示“每页显示条数”部分。默认true--显示
showRowsInfo: true,//是否显示当前页的一些信息。默认true--显示
//用户每次切换页号,都自动触发本函数
//每次返回切换页号之后的pageNo和pageSize
onChangePage:function (event,pageObj) {
queryActivityByConditionForPage(pageObj.currentPage,pageObj.rowsPerPage);
}
})
}
});
}