用三种不同的方法实现多数据的分页功能。原生sql和mybatis的操作需要每次点击不同页数时都发送http请求,进行一次数据库查询,如果放在前端页面写js语句则不需要每次都请求一次,下面是三种不同的方式示例。
效果图
第一种js方式:
//分页 主要思想是获取当前页数和每页需要显示的数据量,然后把总数据用JavaScript slice()方法进行选取
$scope.queryList = function () {
//num1 当前页数
var num1 = $scope.paginationConf.currentPage;
//num2 当前每页显示的数据量
var num2 = $scope.paginationConf.itemsPerPage;
var num3;
var num4;
if (num1 > 0) {
num3 = (num1 - 1) * num2;
num4 = (num1 - 1) * num2 + num2;
} else {
num3 = num1 * num2;
num4 = num1 * num2 + num2;
}
//分页显示的数据数
$scope.postData = [];
//总的数据数
var postDataAll = [];
for (var i in listData) {
postDataAll[i] = listData[i];
}
//取得分页显示的数据项
$scope.postData = postDataAll.slice(num3, num4);
//共xx条数据
$scope.paginationConf.totalItems = postDataAll.length;
}; $scope.$watch('paginationConf.currentPage + paginationConf.itemsPerPage', $scope.queryList);
第二种 普通sql语句 主要思想是利用limit对数据进行限定
data.page 页数
data.pagesize 每页显示的数据量
if (data.page < 1) {
data.page = 1;
}
sql += " limit " + ((data.page - 1) * data.pagesize) + "," + (data.page * data.pagesize);
第三种 mybatis 同样是利用limit对数据进行限定
<sql id="pageUtil">
limit #{startNum},#{pagesize}
</sql>