springBoot所有依赖和配置文件都写好的状况下
1、dao接口的实现办法

package com.cy.pj.sys.dao;import java.util.List;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Param;import com.cy.pj.sys.pojo.SysLog;@Mapperpublic interface SysLogDao {/** *  * @param username 查问条件(例如查问那个用户的日志信息) * @return  总记录数(基于这个后果能够计算总页数) */    int getRowCount(@Param("username") String username);    /**     *      * @param username 查问条件(例如查问那个用户的日志信息)     * @param startIndex 当前页的起始地位     * @param paInteger 当前页的页面大小     * @return 当前页的日志记录信息     * 数据库中每条日志信息封装到一个SysLog对象中     */    List<SysLog> findPageObjects(            @Param("username")String username,            @Param("startIndex")Integer startIndex,            @Param("pageSize")Integer pageSize            );}

2、写实现dao中Mapper的sql语句

<?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 namespace="com.cy.pj.sys.dao.SysLogDao"><!-- sql元素用于对于sql语句共性的提取,须要的地位用<include>引入 -->    <sql id="queryWhereId">        from sys_Logs        <where>            <if test="username!=null and username!=''">                username like concat('%',#{username},'%')                <!-- concat 字符串的连贯 -->            </if>        </where>    </sql>    <!-- 按条件统计记录总数 -->    <select id="getRowCount" resultType="int">    select count(*)    <include refid="queryWhereId"/>    </select>    <!-- 在映射文件中增加为id为 findPageObjects元素,,实现分页查问-->    <select id="findPageObjects" resultType="com.cy.pj.sys.pojo.SysLog">    select *     <include refid="queryWhereId"/>    order by createdTime desc     limit #{startIndex},#{pageSize}    </select></mapper>

3、写pojo类对数据进行封装,所显示的表字段的pojo类
3.1这里是SysLog

package com.cy.pj.sys.pojo;import java.io.Serializable;import java.util.Date;import lombok.Data;/** * 定义用于封装日志信息的一个pojo对象,这样的对象,在定义时要遵循一下规定 * 1)属性尽量都用对象类型 * 2)提供无参数构造函数 * 3)提供set/get办法,boolean类型变量不能以is作为前缀 * 4)实现序列化接口并手动增加序列化id(便于后续对此对象进行序列化):在java中倡议所有用于存储数据 的对象都实现 * FAQ? * 1)为什么要实现序列化接口 * 2)什么是序列化?(将对象转化为字节) * 3)为什么要序列化?利用在什么场景?(将数据长久化,或将数据存储到缓存中) * 4)什么是反序列化?(将字节转换为对象 * 5)如何序列化和反序列化 * 5.1)设计类是要实现序列化接口 * 5.2)构建IO对象(ObjectOutputStream/ObjectinputStream) * 5.3)通过I/O对象进行序列化和反序列化 * @author Administrator * */@Datapublic class SysLog implements Serializable{    private static final long serialVersionUID = -1592163223057343412L;private Integer id;//用户名private String username;//用户操作private String operation;//申请办法private String method;//申请参数private String params;//执行时长(毫秒)private Long time;//ip地址private String ip;//创立工夫private Date createdTime;}

3.2对获取的信息进行封装(获取分页信息的页码值、页面大小(就是每页所显示的记录)、获取的表总共记录数、总页数 、以后记录)

package com.cy.pj.sys.pojo;import java.util.List;import lombok.Data;/** *  * @author PageObject 为业务封装分业务相干数据的BO对象 * @param <T>参数化的类型(泛型) */@Datapublic class PageObject<T> {//类名<泛型>:类泛型(这里的泛型用于束缚类中的属性,办法参数,办法的返回值)    /**当前页的页码值 */    private Integer pageCurrent=1;     /**页面大小*/    private Integer pageSize=3;      /**总行数(通过查问取得)*/    private Integer rowCount=0;    /**总页数(通过计算取得)*/    private Integer pageCount=0;    /**当前页记录*/     private List<T> records;}

3.3解决异样进行封装

package com.cy.pj.sys.pojo;public class JsonResult {    /**     * 状态码     */private int state=1;/** * 状态信息 */private String message="ok";/** * 正确数据 */private Object data;public JsonResult() {}public JsonResult(String message) {    this.message = message;}public JsonResult(Object data) {    this.data = data;}public JsonResult(Throwable t) {    this.state=0;    this.message=t.getMessage();}public int getState() {    return state;}public void setState(int state) {    this.state = state;}public String getMessage() {    return message;}public void setMessage(String message) {    this.message = message;}public Object getData() {    return data;}public void setData(Object data) {    this.data = data;}}

4、写service接口

package com.cy.pj.sys.service;import com.cy.pj.sys.pojo.PageObject;import com.cy.pj.sys.pojo.SysLog;public interface SysLogService {    PageObject<SysLog> findPageObject(String username,Integer pageCurrent);}

5、写实现service接口的实现类

package com.cy.pj.sys.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.cy.pj.sys.dao.SysLogDao;import com.cy.pj.sys.pojo.PageObject;import com.cy.pj.sys.pojo.SysLog;import com.cy.pj.sys.service.SysLogService;import om.cy.pj.common.exception.ServiceException;@Servicepublic class SysLogServiceImpl implements SysLogService {    @Autowired    private SysLogDao sysLogDao;    @Override    public PageObject<SysLog> findPageObject(String username, Integer pageCurrent) {        // 1.验证参数的合法性        // 1.1验证pageCurrent的合法性        // 不非法抛出IllegalArgumentException异样        if (pageCurrent == null || pageCurrent < 1)            throw new IllegalArgumentException("以后也显示不正确");        // 基于条件查问总记录数        // 2.1执行查问        int rowCount = sysLogDao.getRowCount(username);        // 2.2验证查问后果,如果后果为0不在执行如下操作        if (rowCount == 0)            throw new ServiceException("零碎登录没有查到对应的记录");        // 3.基于条件查问当前页记录(pageSize定义为2)        // 3.1)定义pageSize        int pageSize = 2;        //3.2计算startIndex        int startIndex=(pageCurrent-1)*pageSize;        //3.3执行以后数据的查问操作        List<SysLog> records = sysLogDao.findPageObjects(username, startIndex, pageSize);        //4.对分页信息以及当前页记录进行封装        //4.1 构建PageObject对象        PageObject<SysLog> pageObject = new PageObject<>();        //4.2封装数据         pageObject.setPageCurrent(pageCurrent);          pageObject.setPageSize(pageSize);          pageObject.setRowCount(rowCount);          pageObject.setRecords(records);          pageObject.setPageCount((rowCount-1)/pageSize+1);          //5.返回封装后果        return pageObject;    }}

5.自定义异样

package om.cy.pj.common.exception;public class ServiceException extends RuntimeException {public ServiceException() {    super();}public ServiceException(String message) {    super(message);}public ServiceException(Throwable cause) {    super(cause);}}

controller类

@Controllerpublic class PageController {    @Autowired    private SysLogService sysLogService;    /*     * 在Controller类中增加分页申请解决办法     */        @RequestMapping("doFindPageObjects")    @ResponseBody    public JsonResult doFindPageObjects(String username,Integer pageCurrent) {        PageObject<SysLog> findPageObject = sysLogService.findPageObject(username, pageCurrent);        return new JsonResult(findPageObject);    }    

html页面和js写的办法
数据显示页面的js编写办法

<div id="pageId" class="box-footer clearfix" dm="100"></div>            <!-- /.box-body -->        </div>        <!-- /.box -->    </div></div><script type="text/javascript">    /* 分页页面加载实现,向服务端发动异步申请 */    $(function() {        $("#pageId").load("doPageUI",function(){            doGetObjects();        });    });    /* 定义异步申请处理函数, */    function doGetObjects(){        //1.定义url和参数        var url = "doFindPageObjects";        var params={"pageCurrent":1};        //2.发动异步申请         //请问如下ajax申请的回调函数参数名能够是任意吗?//能够,必须合乎标识符的标准        $.getJSON(url,params,function(result){                        doHandleQueryResponseResult(result);        });//非凡的ajax函数    }    function doHandleQueryResponseResult(result){        if(result.state==1){//ok            //更新table中tbody外部的数据            doSetTableBodyRows(result.data.records);//将数据出现在页面上            /*             //更新页面page。html分页数据             */            doSetPagination(result.data);            }else{            alert(result.message);        }    }        function doSetTableBodyRows(records){        //1.获取tBody对象,并革除对象        var tBody=$("#tbodyId");        tBody.empty();        //2.迭代records记录,并将其内容追加到tbody        for(var i in records){            //2.1构建tr对象            var tr=$("<tr></tr>");            //2.2构建tds对象            var tds=doCreateTds(records[i]);            //2.3将tds追加到tr中            tr.append(tds);            //2.4将tr追加tbody中            tBody.append(tr);        }    }    function doCreateTds(data){        var tds="<td><input type='checkbox' class='cBox' name='cItem' value='"+data.id+"'></td>"        +"<td>"+data.username+"</td>"        +"<td>"+data.operation+"</td>"        +"<td>"+data.method+"</td>"        +"<td>"+data.params+"</td>"        +"<td>"+data.ip+"</td>"        +"<td>"+data.time+"</td>";        return tds;    }</script>

创立高低页翻页的按钮HTML页 以及js的编写

<ul class="pagination pagination-sm no-margin pull-right">    <li><a class="first">首页</a></li>    <li><a class="pre">上一页</a></li>    <li><a class="next">下一页</a></li>    <li><a class="last">尾页</a></li>    <li><a class="rowCount">总记录数(0)</a></li>    <li><a class="pageCount">总页数(0)</a></li>    <li><a class="pageCurrent">当前页(0)</a></li></ul><script type="text/javascript">    function doSetPagination(page){        console.log("page",page)        //1.初始化数据        $(".rowCount").html("总记录数("+page.rowCount+")");        $(".pageCount").html("总页数("+page.pageCount+")");        $(".pageCurrent").html("当前页("+page.pageCurrent+")");    //2.绑定数据(为后续对此数据的应用提供服务)    $("#pageId").data("pageCurrent",page.pageCurrent);    $("#pageId").data("pageCount",page.pageCount);    }    $(function(){        //事件注册    $("#pageId").on("click",".first,.pre,.next,.last",doJumpToPage);    })    function doJumpToPage(){        //1.获取点击对象的clss值        var cls=$(this).prop("class");//Property        //2.基于点击的对象执行pageCurrent值得批改        //2.1获取pageCurrent, pageCount的以后值         var pageCurrent=$("#pageId").data("pageCurrent");            var pageCount=$("#pageId").data("pageCount");            //2.2批改pageCurrent的值            if(cls=="first"){//首页                pageCurrent=1;            }else if(cls=="pre"&&pageCurrent>1){//上一页                pageCurrent--;            }else if(cls=="next"&&pageCurrent<pageCount){//下一页                pageCurrent++;            }else if(cls=="last"){//最初一页                pageCurrent=pageCount;            }else{             return;    }            //3.对pageCurrent值进行从新绑定            $("#pageId").data("pageCurrent",pageCurrent);            //4.基于新的pageCurrent的值进行当前页数据查问            doGetObjects();    }     function doGetObjects(){        //1.定义url和参数        var url ="doFindPageObjects";        //data是从指定元素上获取绑定的数据        //数据会在何时进行绑定?(setPagination,doQueryObjects)        var pageCurrent = $("#pageId").data("pageCurrent");        //为什么要执行如下判断,而后初始化pageCurrent的值为1        //pageCurrent参数在没有赋值的状况下,默认初始值应该为1.        if(!pageCurrent)            pageCurrent=1;        var params={"pageCurrent":pageCurrent};        //2.发动异步申请        //请问如下ajax申请的回调函数参数名能够是任意的吗??能够,必须合乎标识符的标准        $.getJSON(url,params,function(result){            //请问result是一个字符串还是json格局的js对象?  答:json格局对象            doHandleQueryResponseResult(result);        });    }//非凡的ajax函数    </script>~~~~