mybatis-分页显示数据
分页用到的两个实体类
package com.yangwei.shop.entity; /** * 注意 get,set,remove 方法与一般的实体类的不同*/ public class SystemContext { private static ThreadLocal<Integer> pageSize = new ThreadLocal<Integer>(); private static ThreadLocal<Integer> pageIndex = new ThreadLocal<Integer>(); private static ThreadLocal<Integer> pageOffset = new ThreadLocal<Integer>(); /** * 升序还是降序 */ private static ThreadLocal<String> order = new ThreadLocal<String>(); /** * 根据那个字段排序 */ private static ThreadLocal<String> sort = new ThreadLocal<String>(); public static String getOrder() { return order.get(); } public static void setOrder(String _order) { order.set(_order); } public static void removeOrder() { order.remove(); } public static String getSort() { return sort.get(); } public static void setSort(String _sort) { sort.set(_sort); } public static void removeSort() { sort.remove(); } public static int getPageOffset() { return pageOffset.get(); } public static void setPageOffset(int _pageOffset) { pageOffset.set(_pageOffset); } public static void removePageOffset() { pageOffset.remove(); } public static void setPageSize(int _pageSize) { pageSize.set(_pageSize); } public static int getPageSize() { return pageSize.get(); } public static void removePageSize() { pageSize.remove(); } public static void setPageIndex(int _pageIndex) { pageIndex.set(_pageIndex); } public static int getPageIndex() { return pageIndex.get(); } public static void removePageIndex() { pageIndex.remove(); } }
package com.yangwei.shop.entity; import java.util.List; public class Pager<E> { /** * 第几页 */ private int pageIndex; /** * 每页显示多少条 */ private int pageSize; /** * 分页的开始值 */ private int pageOffset; /** * 总共多少条记录 */ private int totalRecord; /** * 总共多少页 */ private int totalPage; /** * 放置具体数据的列表 */ private List<E> datas; public int getPageIndex() { return pageIndex; } public void setPageIndex(int pageIndex) { this.pageIndex = pageIndex; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalRecord() { return totalRecord; } public void setTotalRecord(int totalRecord) { this.totalRecord = totalRecord; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public List<E> getDatas() { return datas; } public void setDatas(List<E> datas) { this.datas = datas; } public int getPageOffset() { return pageOffset; } public void setPageOffset(int pageOffset) { this.pageOffset = pageOffset; } }
接下来就是真正的分页了, mybatis中mapper.xml配置文件中的两条查询语句如下
<!-- 多个参数的形式,需要使用map来存储--> <select id="find" parameterType="map" resultType="User"> <!-- 只要是#{}这种形式的,都会以?形式替代,对应字符串形式,都会加上引号--> <!-- 只要是${}这种形式的,不会用?形式替代,传过来什么,就什么替代--> select * from t_user where ( username like #{name} or nickname like #{name} ) order by ${sort} ${order} limit #{pageOffset},#{pageSize} <!-- 对应的sql便是 select * from t_user where (username like ? or nickname like ?) order by id desc limit ? ? --> </select> <select id="count" parameterType="map" resultType="int"> select count(*) from t_user where ( username like #{name} or nickname like #{name} ) </select>
java代码实现分页
/** * 分页显示 */ public static Pager<User> testFind(String name){ int pageOffset=SystemContext.getPageOffset(); int pageSize=SystemContext.getPageSize(); String order=SystemContext.getOrder(); String sort=SystemContext.getSort(); Pager<User> pages=new Pager<User>(); SqlSession session=null; try { session = MyBatisUtil.createSession(); Map<String,Object> map=new HashMap<String,Object>(); //使用like模糊查询的时候,注意百分号加在这里 map.put("name", "%"+name+"%"); map.put("pageOffset", pageOffset); map.put("pageSize", pageSize); map.put("order", order); map.put("sort", sort); List<User> users=session.selectList(User.class.getName()+".find", map); pages.setDatas(users); pages.setPageOffset(pageOffset); pages.setPageSize(pageSize); int count=session.selectOne(User.class.getName()+".count", map); pages.setTotalRecord(count); //所有的数据都存到了Pager对象中 } finally{ MyBatisUtil.closeSession(session); } return pages; }
测试上面分页代码
SystemContext.setPageOffset(0); SystemContext.setPageSize(15); SystemContext.setOrder("desc"); SystemContext.setSort("id"); Pager<User> ps = testFind("zhang"); System.out.println(ps.getTotalRecord()); for(User u: ps.getDatas()){ System.out.println(u.getNickname()); }
mybatis-分页显示数据的更多相关文章
- 转:JSP 分页显示数据 (Oracle)
JSP 分页显示数据 (Oracle) 标签: Oracle分页JSP分页 2013-11-19 20:40 3598人阅读 评论(1) 收藏 举报 分类: Web(11) 版权声明:本文为博主原 ...
- JSP 分页显示数据 (Oracle)
要实现分页,首先我们要做的就是如何来编写SQL语句,网上也有很多,大家可以搜一下.在这里,我们使用一种比较常用的方式来编写SQL语句.代码如下: ----分页显示 select * from (sel ...
- ASP.NET(五):ASP.net实现真分页显示数据
导读:在上篇文章中,介绍了用假分页实现数据的分页显示 ,而避免了去拖动滚动条.但,假分页在分页的同时,其实是拖垮了查询效率的.每一次分页都得重新查询一遍数据,那么有没有方法可以同时兼顾效率和分页呢,那 ...
- ASP.NET(四):ASP.net实现假分页显示数据
导读:在做数据查询的时候,有的时候查询到的数据有很多.通常呢,我们一般都是去拖动右侧边的滚动条.但是,有了分页后,我们就可以不必是使用滚动条,而直接通过分页查看我们想要的数据.在分页的过程中,有分为真 ...
- repeater 分页显示数据
表名:ChinaStates 控件:Repeater 查询代码DA: public class ChinaStatesDA { private DataClassesDataContext Conte ...
- ligerui做分页显示数据
现在前台技术用到的是ligerui,一直想写一个有关ligerui的显示,利用加班的今天偷点闲复制一下下,当自己的一些小资料吧,不会的时候,还可以来看看............稍微有点多,毕竟是从前后 ...
- ListView OnScrollListener详解(滑屏分页显示数据)
package com.action; import java.util.ArrayList; import java.util.List; import android.app.Activity; ...
- 用react分页显示数据
去年年底,尝试着用react写个组件化的页面! demo地址 里面有一个list页面弄了一下数据的分页展示 展示一下主要三个组件:父组件listBox.列表组件List.按钮组件PageButton ...
- jQuery+Ajax+PHP+Mysql实现分页显示数据
css <style type="text/css"> #loading{ position: absolute; top: 200px; left:400px; } ...
- JSP页面分页显示数据
效果如上图所示!最多显示10条:完整jsp和后台代码如下: <%@ page contentType="text/html;charset=UTF-8" %> < ...
随机推荐
- 三菱Ethernet工业以太网
1.什么是Ethernet? 1)网络组成信息网和控制网 2)IP地址的概念 3)端口号的概念 4)通信方式,通信协议 5)开放关闭处理 6)要点总结 2.Ethernet模块 1)CUP能够安装的E ...
- python自学1——接口测试
尝试写了一个简单的接口测试,基于Python3.4,主要用到了Python读取excel以及requests库的知识,也算是对这段时间Python基础知识学习的一个巩固吧. 因为还没有学习到Pytho ...
- Spring Boot之Hello World
Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...
- try...catch...finally语句块
try-catch-finally语句主要是用来处理检查异常,捕获并处理,以及最后必须要执行的finally块. try-catch-finally语句入门: 1.try-catch-finally语 ...
- java基础系列(三)---HashMap
java基础系列(三)---HashMap java基础系列 java基础系列(一)---String.StringBuffer.StringBuilder java基础系列(二)---Integer ...
- [2015-10-11]常用git命令
从vs2013开始,vs已经对git的操作提供了很好的支持,但是重度使用时还是会遇到很多抽风的时候,在此记录一些常用命令. 分支操作 查看所有远程分支 git branch -r 查看本地分支 git ...
- JS函数参数
1.js不是面向对象,不可以重载函数.如果两个函数方法名相同,参数不同,那么js加载时后面的函数会覆盖前面的函数. 所以调用函数时只会调用后面的方法. 2.js设置可变参数时,可以用arguments ...
- 简单易学的SSM(Spring+SpringMVC+MyBatis)整合
SSM(Spring+SpringMVC+MyBatis)的整合: 具体执行过程:1.用户在页面向后台发送一个请求 2.请求由DispatcherServlet 前端控制器拦截交给SpringMVC管 ...
- 正则表达式 提取<A>标签
功能用途 主要实现了提取html代码中的a标签和url地址. 示例代码 Regex regex = new Regex("href\\s*=\\s*(?:\"(?<1> ...
- Windows下配置Nginx
一.今天是2017年1月18日.揣着一种也许叫做冲动的心情,决定以后每天都记录和回顾新涉及的技术,巩固已学到的知识,坚持. 二.回归到今天的技术主题,因为之前对于[反向代理]这种技术充满了好奇,借此机 ...