java mvc 分页查询条件_java分页条件查询-GridManager.js表格插件+Pageable分页对象+mybatis pagehelper分页插件...
总览:
一. GridManager.js表格插件
直接上插件API:链接地址
感觉该插件简单好用,插件作者也是有问必答,nice
二. 添加依赖
后端: pom文件添加:
1.7.0.RELEASE
org.springframework.data
spring-data-commons
${springframework.data}
5.1.1
com.github.pagehelper
pagehelper
${pagehelper.version}
springMVC配置文件中添加:
mybatis配置文件添加:
helperDialect=mysql
前端
三. 具体实现
页面容器
- 当前位置:
- 产品管理
- 产品列表
产品名称:
请选择品牌:
上下架:
下架
上架
搜索
重置
1.填充品牌下拉框
页面引入品牌js脚本
brand-select.js
$(function(){
$.ajax({
url:"../brand/selectPageByQueryAjax",//请求的url地址
dataType:"json",//返回的格式为json
async:true,//请求是否异步,默认true异步,这是ajax的特性
data:{},//参数值
type:"POST",//请求的方式
beforeSend:function(){},//请求前的处理
success:function(data){
var brands = data.dataObject;
$("#brandId").find("option").remove();//防止重复追加
$("#brandId").append("请选择品牌");
$.each(brands, function(i, item) {
$("#brandId").append(""+item.name+"");
});
},//请求成功的处理
complete:function(){},//请求完成的处理
error:function(){
alert("error...");
}//请求出错的处理
});
});
查询品牌后端 较为简单,只贴主要代码
@ResponseBody
@RequestMapping(value = "selectPageByQueryAjax")
public JsonResult toEditBrand(){
JsonResult result = new JsonResult<>();
List brands = brandService.selectPageByQueryAjax();
result.setDataObject(brands);
return result;
}
2.分页条件查询产品
页面引入该JS脚本
js内容如下:
var table = document.querySelector('table')
var TGM = table.GM({
supportDrag: false//是否支持拖拽功能
,supportRemind: true//是否支持提示信息功能
,gridManagerName: 'test'//表格grid-manager所对应的值[可在html中配置]
,isCombSorting: true //是否使用组合排序功能
,height: 'auto'//配置表格区域的高度,需要带单位.如 '100px' 或 '50%'
,width:'1040px'
,supportAjaxPage:true//指定列表是否支持分页
,supportSorting: true//配置是否支持排序功能, 非必填项,默认为 false。
,disableCache: false//用于配置是否禁用用户记忆功能, 非必填项,默认为false
,ajax_url: '../goods/goodsPageListByQuery' //请求url
,ajax_type: 'POST'//ajax请求类型['GET', 'POST']默认GET
,query: {
"isShow":false,//后台传参,默认下架
}//配置接口请求参数,可用于搜索条件传递;注意事项:如果是对已实例化表格增加请求参数,请使用.setQuery()方法。
,dataKey: 'list' // 数据本身返回为data, 把数据名模拟为list, 再通responseHandler去更改
,textAlign: 'center'//在v2.3.15将弃用,请使用columnData 中的 align进行配置
,totalsKey:'totals' //数据总条数
,sizeData:[5,10,20] //配置表格每页显示条数选择项,只允许正整数。[10,20,30,50,100]默认
,pageSize:5 //配置初始进入时每页的显示条数,需要与sizeData中的值匹配。
// 可以通过该方法修改全部的请求参数
,requestHandler: function(request){
request.newParams = '这个参数是通过 requestHandler 函数新增的';
}
// 可以通过该方法修改返回的数据
,responseHandler: function(response){
response.list = response.data;
}
//表格列配置参数,数组类型。单个数组元素为对象类型,每一个元素对应一个表格列。
//通过该参数,可以对列进行配置。
,columnData: [{
key: 'id',// 列的唯一索引。字符串类型,必设项
remind: 'the id',// 列的表头提醒内容,字符串类型,非必设项
// align: 'center',
text: '产品ID'//列表头显示名称
},{
key: 'name',
remind: 'the name',
text: '产品名称'
},{
key: 'imgUrl',
remind: 'the imgUrl',
text: '产品图片',
template: function(imgUrl, rowObject){
return '';
}
},{
key: 'isNew',
remind: 'the isNew',
text: '是否新品',
template: function(isNew, rowObject){
return isNew === 1 ? '是' : '否';
}
},{
key: 'isHot',
remind: 'the isHot',
text: '是否热卖',
template: function(isNew, rowObject){
return isNew === 1 ? '是' : '否';
}
},{
key: 'createTime',
remind: 'the createTime',
text: '创建时间',
template: function(lastDate, rowObject){
return new Date(lastDate).format('YYYY-MM-DD HH:mm:ss');
}
},{
key: 'isShow',
remind: 'the isShow',
text: '上下架',
template: function(isNew, rowObject){
return isNew === 1 ? '上架' : '下架';
}
},{
key: 'action',
remind: 'the action',
width: '10%',
text: '操作',
template: function(action, rowObject){
return '删除'
+' 编辑';
}
}
]
// 分页前事件
,pagingBefore: function(query){
console.log('pagingBefore', query);
}
// 分页后事件
,pagingAfter: function(data){
console.log('pagingAfter', data);
}
}, function(query){
// 渲染完成后的回调函数
console.log('渲染完成后的回调函数:', query);
});
//日期格式化,不是插件的代码,只用于处理时间格式化
Date.prototype.format = function(fmt){
var o = {
"M+": this.getMonth() + 1, //月份
"D+": this.getDate(), //日
"d+": this.getDate(), //日
"H+": this.getHours(), //小时
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/([Y,y]+)/.test(fmt)){
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o){
if(new RegExp("(" + k + ")").test(fmt)){
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return fmt;
};
// 删除功能
function delectRowData(node){
// 获取到当前的tr node
var tr = node.parentNode.parentNode;
// 获取到当前渲染tr 所使用的数据
var rowData = document.querySelector('table').GM('getRowData', tr);
// 执行删除操作
if(window.confirm('确认要删除['+rowData.id+']?')){
window.alert('进行后台处理.');
}
}
//编辑
function editRowData(node){
// 获取到当前的tr node
var tr = node.parentNode.parentNode;
// 获取到当前渲染tr 所使用的数据
var rowData = document.querySelector('table').GM('getRowData', tr);
// 执行编辑页面跳转操作
if(window.confirm('确认要修改当前id为['+rowData.id+']的记录吗?')){
$.ajax({
url:"../goods/toEditGoods",//请求的url地址
dataType:"json",//返回的格式为json
async:true,//请求是否异步,默认true异步,这是ajax的特性
data:{
"id":rowData.id
},//参数值
type:"POST",//请求的方式
beforeSend:function(){},//请求前的处理
success:function(data){
console.log("去后台产品编辑");
},//请求成功的处理
complete:function(){},//请求完成的处理
error:function(){
alert("去产品编辑页面出错了...");
}//请求出错的处理
});
}
}
//绑定搜索事件
document.querySelector('.search-action').addEventListener('click', function () {
var _query = {
name: document.querySelector('[name="name"]').value,
brandId: document.querySelector('[name="brandId"]').value,
isShow: document.querySelector('[name="isShow"]').value,
page: 1
};
table.GM('setQuery', _query, function(){
console.log('setQuery执行成功');
});
});
//绑定重置
document.querySelector('.reset-action').addEventListener('click', function () {
document.querySelector('[name="name"]').value = '';
});
后端
封装返回分页结果
public class PageResult {
private List data;//数据结果集
private Long totals;//总记录数
private String stasus;//返回状态
...
}
controller
@ResponseBody
@RequestMapping(value = "/goodsPageListByQuery")
public PageResult goodsPageListByQuery(
@PageableDefault Pageable pageable,ProductQuery productQuery){
try {
PageInfo page = productService.ajaxPageProductList(productQuery, pageable);
long totals = page.getTotal();
List list = page.getList();
PageResult result=new PageResult(list, totals, "success");
return result;
} catch (Exception e) {
e.printStackTrace();
PageResult result=new PageResult(null,null , "error");
return result;
}
}
业务逻辑service
public PageInfo ajaxPageProductList(ProductQuery productQuery, Pageable pageable) {
// 分页处理,从分页插件中获取数据
PageHelper.startPage(pageable.getPageNumber(), pageable.getPageSize());
List result = productDAO.queryProductPageLists(productQuery);
return new PageInfo<>(result);
}
DAO层xml文件
id, brand_id, name, weight, is_new, is_hot, is_commend, is_show, img_url, is_del,
description, package_list, colors, sizes, create_time
select
from product_tb
name like "%"#{name}"%"
and brand_id = #{brandId}
and is_show = #{isShow}
到此大功告成
java mvc 分页查询条件_java分页条件查询-GridManager.js表格插件+Pageable分页对象+mybatis pagehelper分页插件...相关推荐
- Springboot+Mybatis+PageHelper 分页、排序
Springboot+Mybatis+PageHelper 分页.排序 升序 asc.降序 desc <!-- 继承 spring boot 父包--><parent>< ...
- java switch 条件_Java ——if条件语句 switch语句
本节重点思维导图 if条件语句 //如果条件表达式成立,执行语句块 if(条件表达式){ //-语句块 } 如果语句块只有一条语句,大括号可以省略,否则不能省略. 建议,不管有几条语句,都不要省略大括 ...
- java操作mongodb查询总数_java操作mongodb——查询数据
field为查询字段,value为查询值,也可以通过过滤器Filters,Filters提供了一系列查询条件的静态方法 相等 - = FindIterable iter = doc.find(new ...
- java的使用条件_Java使用条件语句和循环结构确定控制流
与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流.本文将简单讲解条件.循环和switch. 一.块作用域 块(block),即复合语句.是指由一对大括号括起来的若干条简单的Java语句 ...
- java 查询 代码_java使用es查询的示例代码
众所周知,elasticsearch简称es,它是基于基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开 ...
- java mvc建包结构_Java SSM框架的配置方法、MVC结构的分析、响应的流程
今天头一次配置成功一个SSM框架,兴奋之余,还应该从使用的角度,将整个ssm配置的方法,配置的原因,认真的分析一下.在结束了对SSM框架简单的分析之后,就要开始回归基础,全面的认真复习.所以这个文档, ...
- java保护型数据成员_Java基础知识笔记第四章:类和对象
编程语言的几个发展阶段 面向机器语言 面向过程语言 面向对象语言:封装.继承.多态 类 类声明 classPerson{ ....... }class植物{ ....... } 类体 类使用类体来描述 ...
- java反射取实体字符串_JAVA反射机制 通过反射 Field类获取和修改对象类的字符串值...
实际编程中如果我们要使用系统中未暴露的方法,我们可以通过反射来使用这些方法,但在使用过程中我们很难确定方法对用的参数类型,以下的代码可以帮你得到这些信息: package cn.sunzn.refle ...
- java实现导出excel表_java实现导出网页中的表格为Excel
将网页中的table数据,导出到excel表格,可以使用java POI实现. java poi是java中操作excel的工具,支持excel的导入与导出,一般有三种形式: 1.HSSFWorkbo ...
最新文章
- git 避免重复输入用户名密码问题解决
- 使用 Spring Cloud 实现微服务系统
- imageset matlab,如何以imageSet或imageDataStore的形式向MATLAB中的BagOfFeatures()函數提供輸入?...
- 解决HP t5335z瘦客户机休眠问题
- 【渝粤教育】国家开放大学2018年秋季 2409T中国古代文学(B)(1) 参考试题
- cadence SPB17.4 - 保存和恢复颜色配置
- [A3C]:算法原理详解
- 吴江运东2万+,到底贵不贵?
- 03 野火imxull开发板添加 正点原子lcd 支持
- wannacry作者捉到了吗_WannaCry爆发的根源原来是它?
- 手把手教你搭建属于自己的技术博客
- 洛阳中考实验计算机分数,2018洛阳中考科目及分值
- 基于matlab的脑瘤mr图像处理_MRI(脑肿瘤)图像处理与分割、颅骨切除
- *1-4 OJ 605 格雷码
- 通过网络安装CentOs7
- transE论文阅读 19年记录的
- OLED TFT屏幕相关
- IEEE论文投稿流程
- Java实现设计模式之——单例模式
- Mysql:Mybatis在xml文件中处理大于号小于号的方法
热门文章
- ​​​​​​​Git学习笔记与IntelliJ IDEA整合
- 职场升职加薪不二法则,德到领袖偷偷告诉你
- Ooui:在浏览器中运行.NET应用
- 1月26日学习内容整理:reverse函数补充,modelform对象补充,form表单参数补充
- Linux内核链表深度分析【转】
- ArcGis 10+Oracle发布WFS-T服务,无法更新Feature的解决方法
- 【JAVA资料免费下载】158个JAVA免豆精品资料汇总——下载目录(转载)
- Linux文件夹的打开方式
- [第16天]IIS UNICODE 编码漏洞
- suse linux mysql下载_SUSE Linux安装MySQL