sql,mybatis,javascript分页功能的实现
用三种不同的方法实现多数据的分页功能。原生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>