SpringMVC与Mybatis集合实现分页功能(实际项目)
2016-08-12 14:26
441 查看
利用mybatis-paginator实现分页
1、mybatis-paginator简介
mybatis-paginator是gethub上的一个开源项目、用于java后台获取分页数据、该开源项目还提供一个列表组件(mmgrid)用于前端展示。
2、该开源项目的使用说明:
Maven中加入依赖
4、Mybatis中创建一个查询,内容可以是任何Mybatis表达式
<sql id="Base_Column_List">
SPXX01, SPXX02, GYS01, GYS02
</sql>
<select id="selectXqtSpxx" resultMap="xqtSpxx" parameterType="java.util.Map">
select
<include refid="Base_Column_List" />
from xqtspxx t1
where 1 = 1
<if test="spxx01 != null and spxx01 != ''" >
and t1.spxx01 like CONCAT(CONCAT('%','${spxx01}'),'%')
</if>
<if test="spxx02 != null and spxx02 != ''" >
and t1.spxx02 like CONCAT(CONCAT('%','${spxx02}'),'%')
</if>
<if test="gys01 != null and gys01 != ''" >
and t1.gys01 like CONCAT(CONCAT('%','${gys01}'),'%')
</if>
<if test="gys02 != null and gys02 != ''" >
and t1.gys02 like CONCAT(CONCAT('%','${gys02}'),'%')
</if>
order by t1.spxx01
</select>
5、Dao层代码
接口:
1、mybatis-paginator简介
mybatis-paginator是gethub上的一个开源项目、用于java后台获取分页数据、该开源项目还提供一个列表组件(mmgrid)用于前端展示。
2、该开源项目的使用说明:
Maven中加入依赖
<dependencies> ... <dependency> <groupId>com.github.miemiedev</groupId> <artifactId>mybatis-paginator</artifactId> <version>1.2.10</version> </dependency> ... </dependencies>3、Mybatis配置文件添加分页插件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd"> <configuration> <settings> <setting name="cacheEnabled" value="false" /> <setting name="lazyLoadingEnabled" value="false" /> <setting name="aggressiveLazyLoading" value="false"/> </settings> <plugins> <plugin interceptor="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor"> <property name="dialectClass" value="com.github.miemiedev.mybatis.paginator.dialect.OracleDialect"/> </plugin> </plugins> </configuration>
4、Mybatis中创建一个查询,内容可以是任何Mybatis表达式
<sql id="Base_Column_List">
SPXX01, SPXX02, GYS01, GYS02
</sql>
<select id="selectXqtSpxx" resultMap="xqtSpxx" parameterType="java.util.Map">
select
<include refid="Base_Column_List" />
from xqtspxx t1
where 1 = 1
<if test="spxx01 != null and spxx01 != ''" >
and t1.spxx01 like CONCAT(CONCAT('%','${spxx01}'),'%')
</if>
<if test="spxx02 != null and spxx02 != ''" >
and t1.spxx02 like CONCAT(CONCAT('%','${spxx02}'),'%')
</if>
<if test="gys01 != null and gys01 != ''" >
and t1.gys01 like CONCAT(CONCAT('%','${gys01}'),'%')
</if>
<if test="gys02 != null and gys02 != ''" >
and t1.gys02 like CONCAT(CONCAT('%','${gys02}'),'%')
</if>
order by t1.spxx01
</select>
5、Dao层代码
package com.pcmall.dao.sale.xqt; import java.util.List; import java.util.Map; import com.github.miemiedev.mybatis.paginator.domain.PageBounds; import com.pcmall.domain.sale.xqt.XqtSpxx; public interface XqtSpxxMapper { List<XqtSpxx> selectXqtSpxx(Map<String,Object> map, PageBounds page); }6、Service层代码
接口:
package com.pcmall.service.sale.xqt; import java.util.List; import com.github.miemiedev.mybatis.paginator.domain.PageBounds; import com.pcmall.domain.sale.xqt.XqtSpxx; import com.pcmall.domain.vo.ResponseVO; public interface IXqtSpxxService { List<XqtSpxx> queryXqtSpxx(String spxx01, String spxx02, String gys01, String gys02, PageBounds page); }实现类:
package com.pcmall.service.sale.xqt.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.github.miemiedev.mybatis.paginator.domain.PageBounds; import com.pcmall.dao.sale.xqt.XqtSpxxMapper; import com.pcmall.domain.sale.xqt.XqtSpxx; import com.pcmall.domain.vo.ResponseVO; import com.pcmall.service.sale.xqt.IXqtSpxxService; @Service public class XqtSpxxService implements IXqtSpxxService { @Resource private XqtSpxxMapper xqtSpxxMapper; @Override public List<XqtSpxx> queryXqtSpxx(String spxx01, String spxx02, String gys01, String gys02, PageBounds page) { List<XqtSpxx> xqtSpxxList = new ArrayList<XqtSpxx>(); Map<String,Object> map=new HashMap<String, Object>(); map.put("spxx01", spxx01); map.put("spxx02", spxx02); map.put("gys01", gys01); map.put("gys02", gys02); xqtSpxxList = xqtSpxxMapper.selectXqtSpxx(map, page); return xqtSpxxList; } }7、Controller层代码
@RequestMapping("/selXqtSpxx") @ResponseBody public List<XqtSpxx> selXqtSpxx( @RequestParam(required = false, defaultValue = "1") int startIndex, @RequestParam(required = false, defaultValue = "10") int pageSize, HttpServletRequest request) throws UnsupportedEncodingException { List<XqtSpxx> xqtSpxxList = new ArrayList<XqtSpxx>(); request.setCharacterEncoding("ISO-8859-1"); String spxx01 = request.getParameter("spxx01"); String spxx02 = request.getParameter("spxx02")==null?null:new String(request.getParameter("spxx02").getBytes("ISO8859_1"),"UTF-8"); String gys01 = request.getParameter("gys01"); String gys02 = request.getParameter("gys02")==null?null:new String(request.getParameter("gys02").getBytes("ISO8859_1"),"UTF-8"); xqtSpxxList = xqtSpxxServiceImpl.queryXqtSpxx(spxx01, spxx02, gys01, gys02, new PageBounds(startIndex / pageSize + 1, pageSize)); return xqtSpxxList; }8、前端jsp、js代码如下
<%@ page language="java" pageEncoding="UTF-8"%> <%@ include file="/WEB-INF/views/core/global.jsp"%> <c:set var="pageAlias" value="user" scope="page" /> <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="renderer" content="webkit|ie-comp|ie-stand"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> <!--[if lt IE 9]> <script type="text/javascript" src="lib/html5.js"></script> <script type="text/javascript" src="lib/respond.min.js"></script> <script type="text/javascript" src="lib/PIE_IE678.js"></script> <![endif]--> <link href="${ctx }/static/hui/css/H-ui.min.css" rel="stylesheet" type="text/css" /> <link href="${ctx }/static/hui/css/H-ui.admin.css" rel="stylesheet" type="text/css" /> <link href="${ctx }/static/hui/lib/Hui-iconfont/1.0.7/iconfont.css" rel="stylesheet" type="text/css" /> <!--[if IE 6]> <script type="text/javascript" src="http://lib.h-ui.net/DD_belatedPNG_0.0.8a-min.js" ></script> <script>DD_belatedPNG.fix('*');</script> <![endif]--> <title>新奇特商品维护</title> </head> <body> <iframe id='exportFrame' style="display: none" src=""></iframe> <div class="pd-20"> <form id="form" action="${ctx}/xqt/xqtmain/add"> <div class="text-l"> 商品编码: <input type="text" class="input-text" style="width: 180px" placeholder="商品编码" id="spxx01" name="spxx01"> 商品名称: <input type="text" class="input-text" style="width: 180px" placeholder="商品名称" id="spxx02" name="spxx02"> 供应商编码: <input type="text" class="input-text" style="width: 180px" placeholder="供应商编码" id="gys01" name="gys01"> 供应商名称: <input type="text" class="input-text" style="width: 180px" placeholder="供应商名称" id="gys02" name="gys02"> <button onclick="search()" type="button" class="btn btn-primary radius" id="" name=""> <i class="Hui-iconfont"></i> 查询 </button> </div> </form> <div class="cl pd-5 bg-1 bk-gray mt-20"> <span class="l"><a href="javascript:;" onclick="xqtspxx_add('添加新奇特商品','${ctx}/xqt/xqtmain/add','','510')" class="btn btn-primary radius"><i class="Hui-iconfont"></i> 添加新奇特商品</a></span> <span class="r"> </span> </div> <table id="xqtList" class="table table-border table-bordered table-bg"> <thead> <tr> <th width="100px">商品编码</th> <th width="250px">商品名称</th> <th width="100px">供应商编码</th> <th width="250px">供应商名称</th> <th width="100px">操作</th> </tr> </thead> <tbody></tbody> <!-- tbody是必须的 --> </table> </div> <script type="text/javascript" src="${ctx }/static/hui/lib/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript" src="${ctx }/static/hui/lib/layer/2.1/layer.js"></script> <script type="text/javascript" src="${ctx }/static/hui/lib/My97DatePicker/WdatePicker.js"></script> <script type="text/javascript" src="${ctx }/static/hui/lib/datatables/1.10.0/jquery.dataTables.min.js"></script> <script type="text/javascript" src="${ctx }/static/hui/js/H-ui.js"></script> <script type="text/javascript" src="${ctx }/static/hui/js/H-ui.admin.js"></script> <script type="text/javascript"> var table; $(function() { var $wrapper = $('#div-table-container'); table = $('#xqtList').DataTable( { //"ajax" : '${ctx}/user/queryUser', "ajax" : function(data, callback, settings) {//ajax配置为function,手动调用异步查询 //手动控制遮罩 //$wrapper.spinModal(); //封装请求参数 var param = getQueryCondition(data); $.ajax({ type : "GET", url : '${ctx}/xqt/xqtmain/selXqtSpxx', cache : false, //禁用缓存 data : param, //传入已封装的参数 dataType : "json", success : function(result) { var returnData = {}; returnData.draw = data.draw; returnData.recordsTotal = result.totalCount; returnData.recordsFiltered = result.totalCount;//后台不实现过滤功能,每次查询均视作全部结果 returnData.data = result.items; callback(returnData); }, error : function( XMLHttpRequest, textStatus, errorThrown) { alert("查询失败"); //$wrapper.spinModal(false); } }); }, "processing" : true, "serverSide" : true, "info" : true, "lengthChange" : false, "searching" : false, "ordering" : false, "columnDefs" : [{"render":function(data, type, row) { return "<a title='编辑' href='javascript:;' onclick=\"xqtspxx_edit('编辑新奇特商品','${ctx}/xqt/xqtmain/edit?spxx01="+ row.spxx01 +"','','510')\" class=\"ml-5\" style=\"text-decoration:none\"><i class=\"Hui-iconfont\"></i>编辑</a> " +"<a title=\"删除\" href=\"javascript:;\" onclick=\"xqtspxx_del(this,'"+ row.spxx01 +"')\" class=\"ml-5\" style=\"text-decoration:none\"><i class=\"Hui-iconfont\"></i>删除</a>"; }, "targets" : 4 }], columns : [ { "data" : "spxx01" }, { "data" : "spxx02" }, { "data" : "gys01" }, { "data" : "gys02" }] }); }); /*添加*/ function xqtspxx_add(title, url, w, h) { layer_show(title, url, w, h); } /*编辑*/ function xqtspxx_edit(title, url, w, h) { layer_show(title, url, w, h); } /*删除*/ function xqtspxx_del(obj, id) { layer.confirm('确认要删除吗?', function(index) { var param = {}; param.spxx01 = id; $.ajax({ type : "POST", url : '${ctx}/xqt/xqtmain/delete', data : param, //传入已封装的参数 dataType : "json", success : function(data) { if(data.success){ layer.msg('删除成功', { icon : 1, time : 1000 }); search(); }else { layer.msg('删除失败,原因如下:' + data.errorMsg, { icon : 5 }); } }, error : function( XMLHttpRequest, textStatus, errorThrown) { layer.msg('删除失败'); //$wrapper.spinModal(false); } }); }); } function search() { table.ajax.reload(); } function getQueryCondition(data) { var param = {}; //组装排序参数 if (data.order && data.order.length && data.order[0]) { switch (data.order[0].column) { case 1: param.orderColumn = "spxx01"; break; case 2: param.orderColumn = "spxx01"; break; case 3: param.orderColumn = "spxx01"; break; case 4: param.orderColumn = "spxx01"; break; default: param.orderColumn = "spxx01"; break; } param.orderDir = data.order[0].dir; } //组装查询参数 if ($("#spxx01").val() != "") { param.spxx01 = $("#spxx01").val(); } if ($("#spxx02").val() != "") { param.spxx02 = $("#spxx02").val(); } if ($("#gys01").val() != "") { param.gys01 = $("#gys01").val(); } if ($("#gys02").val() != "") { param.gys02 = $("#gys02").val(); } //组装分页参数 param.startIndex = data.start; param.pageSize = data.length; return param; } </script> </body> </html>
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- spring aop 无法代理父类方法 的解决方法
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- more、less 和 most 的区别
- AJAX实现瀑布流触发分页与分页触发瀑布流的方法
- 十万条Access数据表分页的两个解决方法
- sqlserver关于分页存储过程的优化【让数据库按我们的意思执行查询计划】
- 高效的mysql分页方法及原理
- asp又一个分页的代码例子
- SqlServer 2000、2005分页存储过程整理第1/3页
- JQuery的Pager分页器实现代码
- ADO存取数据库时如何分页显示