总体思路:

    1.前台查询的时候将当前页和页大小传到后台

    2.后台将当前页,页大小以及数据与数据总数返回前台,前台显示完表格完数据之后显示分页插件。

前台页面:

  准备查询条件的表单,与数据表格,分页div       (同时需要在查询条件表单中准备隐藏当前页与页大小的文本框)

 <div class="layui-row">
<%--查询条件的form--%>
<form class="layui-form layui-col-md12 x-so" id="queryTrainschemeForm">
<%--隐藏当前页和页号--%>
<input type="hidden" name="pageNum">
<input type="hidden" name="pageSize"> <input type="text" name="trainingschemaname" placeholder="培养方案名称" autocomplete="off" class="layui-input">
<input type="text" name="majorname" class="layui-input" placeholder="专业名称" autocomplete="off">
<input type="text" name="majorid" class="layui-input" placeholder="专业代码" autocomplete="off">
<div class="layui-input-inline">
<select name="remark1">
<option value="">编辑状态</option>
<option value="保存">保存</option>
<option value="已提交">已提交</option>
</select>
</div>
<%-- <div class="layui-input-inline">
<select name="contrller">
<option>是否使用</option>
<option>是</option>
<option>否</option>
</select>
</div>--%>
<button class="layui-btn" type="button" onclick="queryTrainSchemeFYBtn()"><i class="layui-icon"></i></button>
<button class="layui-btn layui-btn-normal" type="button" onclick='clearQueryCondition(this)' title="点击重置查询条件"><i class="layui-icon"></i></button>
</form>
</div> <!--操作区域-->
<xblock>
<button class="layui-btn" onclick="x_admin_show('课程安排','./trainingScheme-course.html')">上传课程结构图</button>
<button class="layui-btn" onclick="x_admin_show('课程安排','./trainingScheme-course.html')">安排课程</button>
<button class="layui-btn" onclick="x_admin_show('课程安排','./trainingScheme-course.html')">安排课程能力</button>
<button class="layui-btn layui-btn-normal" onclick="">下载培养方案 </button>
</xblock>
<!--end 操作区域--> <!--表格内容-->
<table class="layui-table">
<thead>
<tr>
<th></th>
<th>序号</th>
<th>培养方案名称</th>
<th>专业名称</th>
<th>专业代码</th>
<th>学科门类</th>
<th>专业负责人</th>
<th>修业年限</th>
<th>修订人</th>
<th>修订时间</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody id="trainSchemeTbody">
<!--动态填充数据-->
</tbody>
</table>
<!--end 表格内容--> <!--分页-->
<div id="pageDiv"></div>
<!--end 分页-->

效果:

JS:(重点)

  解释:点击查询的时候将页号清空(这个有时候容易忘),带着组合条件去后台查询,查询成功后将数据填充到表格之后显示分页组件。点击分页组件的页号与上下页的时候动态设置页面中隐藏域的值,同时调用查询方法。

  点击清空条件按钮的时候清空所有的查询条件,同时清空页面隐藏的条件,并进行查询。

/*****S 分页查询相关方法**********/
function queryTrainSchemeFY(){
$.ajax({
url:contextPath+"/TrainScheme/getTrainSchemeFY.do",
data:$("#queryTrainschemeForm").serialize(),
dataType:'json',
type:'post',
async:true,
success:showTrainSchemeTable
});
} /**
* 填充表格数据
* @param pageInfo ajax返回的参数信息
*/
function showTrainSchemeTable(pageInfo){
// alert(JSON.stringify(pageInfo))
var total = pageInfo.total;//页总数
var pageNum = pageInfo.pageNum;//页号
var pageSize = pageInfo.pageSize;//页大小 var trainschemes = pageInfo.list;
$("#trainSchemeTbody").html("");//清空表格中数据并重新填充数据
for(var i=0,length_1 = trainschemes.length;i<length_1;i++){
var index = (pageNum - 1) * pageSize + i + 1;
var tr = "<tr><td>"+'<input type="radio" name="trainshemeRadio" value="'+trainschemes[i].trainingSchemeID+'"><input type="hidden" value="'+trainschemes[i].trainingSchemeID+'"/></td>'
+'<td>'+index+'</td>'
+'<td>'+replaceNull(trainschemes[i].trainingSchemaName)+'</td>'
+'<td>'+replaceNull(trainschemes[i].majorName)+'</td>'
+'<td>'+replaceNull(trainschemes[i].majorID)+'</td>'
+'<td>'+replaceNull(trainschemes[i].majorType)+'</td>'
+'<td>'+replaceNull(trainschemes[i].majorManager)+'</td>'
+'<td>'+replaceNull(trainschemes[i].trainYears)+'</td>'
+'<td>'+replaceNull(trainschemes[i].revisePerson)+'</td>'
+'<td>'+replaceNull(trainschemes[i].createTime)+'</td>'
+'<td>'+replaceNull(trainschemes[i].remark1)+'</td>'
+'<td>'
+'<a title="点击查看课程详细信息" onclick="openDetailLayer(this)" href=javascript:void(0)><i class="layui-icon"></i></a>'
+'<a href=javascript:void(0) title="点击修改课程基本信息" onclick="openUpdateLayer(this)"><i class="layui-icon"></i></a>'
+'<a href=javascript:void(0) title="点击删除课程" onclick="deleteCourseByCourseId(this)"><i class="layui-icon"></i></a>'
+'</td></tr>'
$("#trainSchemeTbody").append(tr);
} //开启分页组件
trainschemesPage(total,pageNum,pageSize);
} /**
* layui的分页插件
* @param total 总数
* @param pageNum 当前页
* @param pageSize 页大小
*/
function trainschemesPage(total,pageNum,pageSize){
//使用layui的分页插件
layui.use(['laypage', 'layer'], function(){
var laypage = layui.laypage,layer = layui.layer; //执行一个laypage实例
laypage.render({
elem: 'pageDiv', //注意,这里的 test1 是 ID,不用加 # 号
count: total, //数据总数,从服务端得到
limit:pageSize,//每页显示的条数。laypage将会借助 count 和 limit 计算出分页数。
curr:pageNum,//当前页号
limits:[6,10,15,20],
layout:['limit','prev', 'page', 'next','skip','count'],//显示哪些分页组件
jump: function(obj, first){//点击页号的时候执行的函数
//obj包含了当前分页的所有参数,比如:
// console.log(obj.curr); //得到当前页,以便向服务端请求对应页的数据。
// console.log(obj.limit); //得到每页显示的条数 $("[name='pageNum']").val(obj.curr);//向隐藏域设置当前页的值
$("[name='pageSize']").val(obj.limit);//向隐藏域设置当前页的大小
if(!first){//首次不执行(点击的时候才执行)
queryTrainSchemeFY();//执行查询分页函数(这个函数必须写在这里)
}
} });
});
} /**
* 点击查询放大镜的事件
*/
function queryTrainSchemeFYBtn() {
$("[name='pageNum']").val("");//清空页号
queryTrainSchemeFY();//分页查询课程信息
} /**
* 清空查询条件的按钮
* 1.清空所有的条件,包括隐藏域的条件,2.重新查询一次
* @param obj 将清空条件按钮自己传下来
*/
function clearQueryCondition(obj) {
//1.清空条件
var form = $(obj).parents("form");
form.find("input").val("");
form.find("select").val("");
//2.重新查询一次
queryTrainSchemeFY();
} /*****E 分页查询相关方法**********/

如果我们想要当数据不足6条的时候不显示分页可以在调用分页组件之前判断:

    if(total < 6){
return;
}
//开启分页组件
usersPage(total,pageNum,pageSize);

后台Java代码:(返回PageInfo)

    /**
* 分页查询培养方案基本信息
* @param condition 自动映射的查询条件
* @return 分页信息
*/
@RequestMapping("/getTrainSchemeFY")
public PageInfo<Map<String,Object>> getTrainschemeinfosFY(@RequestParam Map condition){
int pageNum = 1;
if(ValidateCheck.isNotNull((String) condition.get("pageNum"))){ //如果不为空的话改变当前页号
pageNum = Integer.parseInt((String) condition.get("pageNum"));
}
int pageSize = DefaultValue.PAGE_SIZE;
if(ValidateCheck.isNotNull((String) condition.get("pageSize"))){ //如果不为空的话改变当前页大小
pageSize = Integer.parseInt((String) condition.get("pageSize"));
}
//开始分页
PageHelper.startPage(pageNum,pageSize);
List<Map<String, Object>> trainschemeinfoByCondition = null;
try {
trainschemeinfoByCondition = trainschemeinfoService.getTrainschemeinfoByCondition(condition);
} catch (SQLException e) {
e.printStackTrace();
}
PageInfo<Map<String,Object>> pageInfo = new PageInfo<Map<String,Object>>(trainschemeinfoByCondition);
return pageInfo;
}

返回数据格式:

layui结合mybatis的pagehelper插件的分页通用的方法的更多相关文章

  1. springboot结合mybatis使用pageHelper插件进行分页查询

    1.pom相关依赖引入 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...

  2. SpringBoot整合mybatis使用pageHelper插件进行分页操作

    SpringBoot整合mybatis分页操作 SpringBoot整合Mybatis进行分页操作,这里需要使用Mybatis的分页插件:pageHelper, 关于pageHelper的介绍,请查看 ...

  3. Mybatis中使用PageHelper插件进行分页

    分页的场景比较常见,下面主要介绍一下使用PageHelper插件进行分页操作: 一.概述: PageHelper支持对mybatis进行分页操作,项目在github地址: https://github ...

  4. Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件

    上一篇文章,写了如何搭建一个简单的Spring boot项目,本篇是接着上一篇文章写得:Spring boot入门:快速搭建Spring boot项目(一),主要是spring boot集成mybat ...

  5. Spring + Mybatis 使用 PageHelper 插件分页

    原文:http://www.cnblogs.com/yucongblog/p/5330886.html 先增加maven依赖: <dependency> <groupId>co ...

  6. pageHelper插件+传统分页处理

    为什么要使用pageHelper:https://www.cnblogs.com/ljdblog/p/6725094.html 配置文件详解:https://www.cnblogs.com/cksvs ...

  7. 使用PageHelper插件分页结合mybatis返回的列表个数不对问题解决

    问题描述:spring mvc+mybatis项目中,当使用PageHelper插件进行分页查询时,查到的总数据量值是正确的,但是查询当前页返回的列表个数不对.比如每页查询10条,返回2条或者3条.r ...

  8. mybatis分页 -----PageHelper插件

    对查询结果进行分页 一,使用limit进行分页 1.mybatis 的sql语句: <if test="page !=null and rows !=null"> li ...

  9. 浅析MyBatis(三):聊一聊MyBatis的实用插件与自定义插件

    在前面的文章中,笔者详细介绍了 MyBatis 框架的底层框架与运行流程,并且在理解运行流程的基础上手写了一个自己的 MyBatis 框架.看完前两篇文章后,相信读者对 MyBatis 的偏底层原理和 ...

随机推荐

  1. 小程序 setData() 方法

    setData() 参数格式 字段 类型 必填 描述 最低版本 data Object 是 这次要改变的数据   callback Function 否 回调函数 1.5.0 callback 是一个 ...

  2. 中小型园区网络的基本部署之动手划分vlan

    在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应了一个特定的用户组,默认情况下这些不同的广播域是相互隔离的.不同的广播域之间想要通信,需要通过一个或多个路由器.这样的一个广播域 ...

  3. Windows与VMware中的CentOS系统互通访问

    [步骤01]设置 CentOS 虚拟机-网络适配器为“桥接模式(直接连接物理网络),复制物理网络连接状态” [步骤02]配置虚拟网卡 [步骤03]配置 CentOS 网络 [步骤04]测试 windo ...

  4. 【刷题】BZOJ 4566 [Haoi2016]找相同字符

    Description 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两个子串中有一个位置不同. Input 两行,两个字符串s1,s2,长度分别为 ...

  5. Codeforces 744C. Hongcow Buys a Deck of Cards(状压DP)

    这题的难点在于状态的设计 首先显然是个状压,需要一维表示卡的状态,另一维如果设计成天数,难以知道当前的钱数,没法确定是否能够购买新的卡,如果设计成钱数,会发现状态数过多,空间与时间都无法承受.但是可以 ...

  6. 【bzoj4198】【Noi2015】荷马史诗

    4198: [Noi2015]荷马史诗 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2200  Solved: 1169[Submit][Statu ...

  7. bzoj3748 Kwadraty

    Claris 当然是要用来%的 但是,,其他dalao,,比如JL的红太阳commonc.题解能不能稍微加几句话,蒟蒻看不懂啊. 在这里解释一下,Claris的题解.(因为我弱,想了半天才明白,所以觉 ...

  8. laravel 5.1 Eloquent常见问题

    1.新增一条记录以及判断是否新增成功 $instance = XxxModel::create(['a' => 1, 'b' => 2]); if ($instance->exist ...

  9. @Springboot搭建项目controller层接收json格式的对象失败

    今天在使用swagger2测试的时候出错 1.@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说: ...

  10. 「Python」人脸识别应用

    人脸识别主要步骤: face_recognition 库的安装 安装此库,首先需要安装编译dlib,此处我们偷个懒,安装软件Anaconda(大牛绕过),此软件预装了dlib. 安装好后,我们直接通过 ...