先在前端页面设置一个每页数据量pagesize
var pagesize=5;
加载分页,目的是把页码展示出来,这里搜索的是全部的数据量,通过Math.ceil(data/pagesize) 总数据量/每页数据量 并向上取整 可得到总页数count
把页数当作循环次数,依次把页码打印到前端,当点击页码的时候,将页码数传到展示数据的方法中
function loadpage(){ $.ajax({ url:"http://localhost:8080/train0229syh/student/loadpage", data:{}, method:"get", success:function (data){ console.log(data); var count=Math.ceil(data/pagesize); $(".pagenation").empty(); for (var i=0;i<count;i++){ $(".pagenation").append("<input type='button' class='item' value='"+(i+1)+"' onclick='switchpage("+(i+1)+")'>") } }, }) }
function switchpage(page){ get(page); }
将页码和每页的数据量传到后端
function get(page) { // ajax ---》 利用ajax进行数据提交 // ++ http协议 $.ajax({ url: "http://localhost:8080/train0229syh/student/findAll", // 地址 data: {"pagesize":pagesize,"page":page}, method: "get", success: function (data) { console.log(data); $("#table1").empty(); view(data); } }) }
获取总数据量
<select id="loadpage" resultType="java.lang.Integer"> select count(*) from student </select>
分页查询 入参类型是Page实体类
其中因为sql无法直接识别数学计算
<select id="findAll" resultType="com.javen.model.Student" parameterType="com.javen.model.Page"> select * from student limit ${(page-1) * (pagesize)},#{pagesize} </select>
原sql
select * from student limit (page-1)*(pagesize),pagesize
Page实体类
public class Page { public int pagesize; public int page; //getset方法省略 }
Dao层
public interface StudentDao { List<Student> findAll(Page page); int loadpage(); }
Service层
@Service public class IStudentServiceImpl implements IStudentService { @Autowired private StudentDao studentDao; public List<Student> findAll(Page page) { return studentDao.findAll(page); } public int loadpage(){ return studentDao.loadpage(); } }
Controller层
@Controller @RequestMapping("/student") public class StudentController { @Autowired private IStudentService iStudentService; @ResponseBody @RequestMapping("/findAll") public List<Student> findAll(Page page){ return iStudentService.findAll(page); } @ResponseBody @RequestMapping("/loadpage") public int loadpage(){ return iStudentService.loadpage(); } }
总体逻辑是:获取总数据量,通过总数据量/每页数据获取总页数,将总页数当作循环次数依次打印出来,当点击页码的时候,将页码数当作参数传给分页展示方法,分页展示方法把总页数和单页数据量传到后台,后台通过limit查询分页
select * from student limit (page-1)*(pagesize),pagesize
(page-1)*pagesize 是limit开始的数据位置,pagesize是从开始数据位置要查的数据数