先上效果图
pageHelper,Mybatis,layui 的配置请自己百度,避免文章太长。
package com.example.demotest.entity;
/**
* @date: 2019/8/12 13:58
*/
public class TEST3 {
private Integer IP;
private String name;
@Override
public String toString() {
return "TEST3{" +
"IP=" + IP +
", name='" + name + '\'' +
'}';
}
public Integer getIP() {
return this.IP;
}
public void setIP(Integer IP) {
this.IP = IP;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
//路径是mapper的路径
<mapper namespace="com.example.demotest.mapper.Pagemapper">
//"getAll" 这个是Service层里的方法名后面会提到,resultType的路径是实体类的路径
<select id="getAll" resultType="com.example.demotest.entity.TEST3">
SELECT * FROM TEST3
</select>
</mapper>
package com.example.demotest.mapper;
import com.example.demotest.entity.TEST3;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @date: 2019/8/12 14:02
*/
//Mapper注解 他会告诉容器这是个Mapper文件
@Mapper
public interface Pagemapper {
List <TEST3> getAll();//这个方法名字就是XML文件里id=""里的方法名
}
package com.example.demotest.service;
import com.example.demotest.entity.TEST3;
import java.util.List;
/**
* @date: 2019/8/12 14:05
*/
public interface PageService {
List<TEST3> getAll();
}
package com.example.demotest.serviceImpl;
import com.example.demotest.entity.TEST3;
import com.example.demotest.mapper.Pagemapper;
import com.example.demotest.service.PageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @date: 2019/8/12 14:06
*/
//注解:这是一个service文件
@Service
public class PageServiceImpl implements PageService {
@Autowired //自动注入
// 这个位置会有报错不用管
Pagemapper pagemapper; //通俗的说这个注解就是 把Pagemapper这个文件引入过来 方便下面的调用(理解的可能不准确本人小白)
@Override
public List<TEST3> getAll() {
List<TEST3> list =pagemapper.getAll();//这样list里面就得到了全部数据
return list;
}
}
package com.example.demotest.controller;
import com.example.demotest.entity.TEST3;
import com.example.demotest.service.PageService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @date: 2019/8/12 14:07
*/
@Controller
//这个注解的意思我理解的是 就是给下面的方法取一个名字 可以在别的地方调用(url地址),具体的可以自行百度
@RequestMapping("/Page")
public class PageController {
@Autowired
PageService pageService;
@ResponseBody
@RequestMapping("/getAll")
//我是用Ajax传过来 page limit 两个值 然后返回一个map
//page limit 是jayui框架设置的默认值所以这里就按这两个写,它两个传过来然后后台通过这两个值进行分页然后返回值
HashMap<String, Object> getAll(int page, int limit){
HashMap<String,Object> map = new HashMap<>();
//这个是PageHelper插件的用法 page表示页码,limit表示每页显示多少条数据
//这个方法要放在查询数据的上一行
PageHelper.startPage(page,limit);
List<TEST3> list =pageService.getAll();
//这一步是将list里的数据封装到PageInfo ,这个插件可以用 PageInfo. 点出很多方法 下面会贴出方法
PageInfo<TEST3> pageInfo =new PageInfo<>(list);
//向map里添加数据,这四个都是必须的 这是layui 要求的格式
map.put("code",0);
map.put("msg","错误信息");
//count 是总数据条数
map.put("count",pageInfo.getTotal());
//data是数据
map.put("data",list );
return map;
}
}
这是PageInfo里的方法,这里我们用到的不多 有兴趣可以自己看看
/**
* 对Page结果进行包装
*
* 新增分页的多项属性,主要参考:http://bbs.csdn.net/topics/360010907
*
* @author liuzh/abel533/isea533
* @version 3.3.0
* @since 3.2.2
* 项目地址 : http://git.oschina.net/free/Mybatis_PageHelper
*/
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//排序
private String orderBy;
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow 共size条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List<T> list;
//第一页
private int firstPage;
//前一页
private int prePage;
//下一页
private int nextPage;
//最后一页
private int lastPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
7.Html 文件最后一步了,script中用了layui框架 可以对照下面看看
点这里
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Selecttitle>
head>
<body>
<table id="demo" lay-filter="test">table>
<link rel="stylesheet" href="/layui/css/layui.css">
<script src="/layui/layui.js">script>
<script src="https://code.jquery.com/jquery-3.0.0.min.js">script>
body>
<script type="text/javascript">
layui.use('table', function(){
var table = layui.table;
//第一个实例
table.render({
elem: '#demo' //与上面table里的id名一样
,height: 300
/*这个地址是Controller层里 @RequestMapping里的别名 因为我的@RequestMapping("/getAll")
是在@RequestMapping("/Page")里面的 所以'/Page/getAll'这么写
*/
,url: '/Page/getAll' //数据接口
,page: { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档
layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip']//自定义分页布局
,limit:5 //每页显示的条数
,limits:[5,10,15] //一个下拉列表可以改每页显示条数
,first: false //不显示首页
,last: false //不显示尾页
}
//这两个[[ 如果你用的是spting boot 一定要把他俩用回车分开
//网上都是连在一起的但是这是一个坑会报错,好像只有spting boot框架才有的错误
,cols: [
[ //表头
{field: 'ip', title: 'IP', width:80, sort: true, fixed: 'left'}
,{field: 'name', title: '用户名', width:80}
]
]
});
});
script>