spring boot +pageHelper分页插件+Mybatis数据库查询框架+layui框架 实现最简洁数据库分页

先上效果图
spring boot +pageHelper分页插件+Mybatis数据库查询框架+layui框架 实现最简洁数据库分页_第1张图片
pageHelper,Mybatis,layui 的配置请自己百度,避免文章太长。

这应该是很简洁的写法了

我的项目结构
spring boot +pageHelper分页插件+Mybatis数据库查询框架+layui框架 实现最简洁数据库分页_第2张图片

  1. 第一步先创建一个实体类 TEST3(与数据库结构一样)

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;
    }
}

  1. 写mapper的xml文件 我的是 Page.xml
<?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>
  1. 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=""里的方法名
}
  1. 写一个Service文件 我设置的名字 PageService
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();
}
  1. 下一步 Impl文件 我的名字为PageServiceImpl 这个是需要继承Service的
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;
    }
}

  1. 重点来了 Controller 层 PageController
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>

你可能感兴趣的:(spring boot +pageHelper分页插件+Mybatis数据库查询框架+layui框架 实现最简洁数据库分页)