mybatis如何做分页处理

1.首先根据自己实际需求编写实体类

 1 import java.io.Serializable;
 2
 3 public class User implements Serializable{  //最好将该实体类序列化
 4
 5     private static final long serialVersionUID = 1L;
 6
 7     private Integer id;
 8     private String name;
 9     private String birthday;
10     private String gender;
11     private String career;
12     private String address;
13     private String mobile;
14     private String picPath;
15
16     public User() {
17     }
18
19     public User(Integer id, String name, String birthday, String gender, String career, String address, String mobile,
20             String picPath) {
21         this.id = id;
22         this.name = name;
23         this.birthday = birthday;
24         this.gender = gender;
25         this.career = career;
26         this.address = address;
27         this.mobile = mobile;
28         this.picPath = picPath;
29     }
30
31
32     public Integer getId() {
33         return id;
34     }
35     public void setId(Integer id) {
36         this.id = id;
37     }
38     public String getName() {
39         return name;
40     }
41     public void setName(String name) {
42         this.name = name;
43     }
44     public String getBirthday() {
45         return birthday;
46     }
47     public void setBirthday(String birthday) {
48         this.birthday = birthday;
49     }
50     public String getGender() {
51         return gender;
52     }
53     public void setGender(String gender) {
54         this.gender = gender;
55     }
56     public String getCareer() {
57         return career;
58     }
59     public void setCareer(String career) {
60         this.career = career;
61     }
62     public String getAddress() {
63         return address;
64     }
65     public void setAddress(String address) {
66         this.address = address;
67     }
68     public String getMobile() {
69         return mobile;
70     }
71     public void setMobile(String mobile) {
72         this.mobile = mobile;
73     }
74     public String getPicPath() {
75         return picPath;
76     }
77     public void setPicPath(String picPath) {
78         this.picPath = picPath;
79     }
80
81
82     @Override
83     public String toString() {
84         return "User [id=" + id + ", name=" + name + ", birthday=" + birthday + ", gender=" + gender + ", career="
85                 + career + ", address=" + address + ", mobile=" + mobile + ", picPath=" + picPath + "
86                 + "]";
87     }
88 }

2.编写分页所需要的通用bean,这是关键的一步。如果你用的是easyUI框架写的管理系统,currPage,PageSize,total,totalPage,rows这几个参数是必须的。

 1 import java.util.List;
 2
 3 public class PageNationBean<T> {
 4     //请求参数
 5     private Integer currPage=1;//当前页
 6     private Integer PageSize=10;//页面数据条数
 7
 8     //响应数据
 9     private Integer total;    //数据的总记录数
10     private Integer totalPage;//总页数
11     private List<T> rows;
12
13     public PageNationBean() {
14     }
15
16     public PageNationBean(Integer currPage, Integer pageSize, Integer total, Integer totalPage, List<T> rows) {
17         this.currPage = currPage;
18         this.PageSize = pageSize;
19         this.total = total;
20         this.totalPage = totalPage;
21         this.rows = rows;
22     }
23
24
25     public Integer getCurrPage() {
26         return currPage;
27     }
28     public void setCurrPage(Integer currPage) {
29         this.currPage = currPage;
30     }
31     public Integer getPageSize() {
32         return PageSize;
33     }
34     public void setPageSize(Integer pageSize) {
35         PageSize = pageSize;
36     }
37     public Integer getTotal() {
38         return total;
39     }
40     public void setTotal(Integer total) {
41         this.total = total;
42     }
43     public Integer getTotalPage() {
44         return totalPage;
45     }
46     public void setTotalPage(Integer totalPage) {
47         this.totalPage = totalPage;
48     }
49     public List<T> getRows() {
50         return rows;
51     }
52     public void setRows(List<T> rows) {
53         this.rows = rows;
54     }
55     @Override
56     public String toString() {
57         return "\n\tPageNationBean [currPage=" + currPage + ", PageSize=" + PageSize + ", total=" + total + ", totalPage="
58                 + totalPage + ", rows=" + rows + "]";
59     }
60
61 }

3.数据库中建好需要测试的表,插入一定量的数据是肯定的

4.编写映射接口

public interface UserMapper {

    PageNationBean<User> getUsersByPagenation(PageNationBean<User> userBean);

}

5.编写映射所需的xml配置文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!-- 命名空间与映射接口的全类名一致 -->
 6 <mapper namespace="com.yc.us.mapper.UserMapper">
 7
 8     <resultMap type="PageNationBean" id="PageNationBeanMap">
 9         <result column="pageSize" property="pageSize"/>
10         <result column="currPage" property="currPage"/>
11         <collection property="rows" column="{pageSize=pageSize,currPage=currPage}" select="getUsers"/>
12     </resultMap>
13
14     <!-- #是采用占用符    $是直接取到值 -->
15     <select id="getUsersByPagenation" parameterType="PageNationBean" resultMap="PageNationBeanMap">
16         select count(1) total,ceil(count(1)/${pageSize}) totalPage,${pageSize} pageSize,${currPage} currPage from profile
17     </select>
18     <select id="getUsers" resultType="User">
19         select * from
20         (select m.*,rownum rn from
21         (select * from profile) m where ${currPage}*${pageSize} >=rownum)
22         where rn > (${currPage}-1)*${pageSize}
23     </select>
24
25 </mapper>

6.根据自己实际需求写一个测试类,进行实际测试

时间: 2024-10-17 06:19:49

mybatis如何做分页处理的相关文章

Mybatis Generator实现分页功能

Mybatis Generator实现分页功能 分类: IBATIS2013-07-17 17:03 882人阅读 评论(1) 收藏 举报 mybatisibatisgeneratorpage分页 众所周知,Mybatis本身没有提供基于数据库方言的分页功能,而是基于JDBC的游标分页,很容易出现性能问题.网上有很多分页的解决方案,不外乎是基于Mybatis本机的插件机制,通过拦截Sql做分页.但是在像Oracle这样的数据库上,拦截器生成的Sql语句没有变量绑定,而且每次语句的都要去拦截,感觉

Mybatis使用之分页

Mybatis使用之分页 一:简介 注:示例基于mysql数据库.Oracle可以自行测试.   使用Mybatis分页主要有两种方式.一种是将分页参数传递到配置文件中.在写sql的时候就做分页.另一种是使用Mybatis的拦截器拦截需要分页的sql语句.重新组装成具有分页功能的sql语句. 分页查询的关键在于查询时需要告诉数据库从第几条开始取.取多少条记录.也就是常用到Page对象(一般是方便传递参数.自己构建的实体类)的pageNumer.pageSize两个主要参数.至于Page对象的总记

Mybatis最入门---分页查询(拦截器分页原理及实现)

[一步是咫尺,一步即天涯] 前文,我们演示了物理分页的Sql实现方式,这种方式使得我们每次在编写查询服务时,不断的重复造轮子.这样的代码实现方式就显得十分的笨拙了.本文是Mybatis分页查询的最后一片内容,我们将介绍基于拦截器的,精巧的实现方式.在阅读这篇文章之前,强烈建议各位看官能够先阅读上文.这样就能对下文我们提及的各种对象及他们之间的关系有一个清晰的关系.好了,废话不多讲,开始我们的正文部分吧. 准备工作: a.操作系统 :win7 x64 b.基本软件:MySQL,Mybatis,SQ

用PHP+MySQL来做分页的演示

用php做分页弄懂逻辑关系其实不难,不过我在听课的时候估计是被老师讲的那些变量里的英文单词给听懵了,因为有几个变量的名字都很像,只是换了两三个英文字母而已,有的就少几个这样的,听到一半已经不知道老师讲的这个变量代表的是什么了,写这个也只是为了复习一下,温故而知新嘛. 英文翻译:page:页   per:由,依靠 //引用数据库 下面附赠一个连接数据库的包装函数使用sql语句时用my_query()这个函数:include ./MySQLDB.php: //先设置当前选中的页码数 $pageNum

分库后如何高效的做分页

现在连接6台mysql数据库,路由分库算法是根据id的hash值%6,根据值不同分别存入6台数据库.现在不知道如何做分页查询列表? 先决原则: 数据分库时尽量选择索引字段,最好此字段还是唯一的. 数据分库时建表时结合业务,选择where后查询比较频繁的字段. 解决方案泛泛之谈: 1.直接使用跨库的多表联合查询. 不建议. 2.向6台数据库server均发送一个查询请求,然后对所有查询结果进行汇总,再处理分页逻辑. 时间换空间.取20条有序数据,6台服务器各取20条,汇总排序返回. 3.建立一个总

关于使用coreseek并为其做分页的介绍(转)

coreseek 做分页时找数据总量还真不好找.以为他会给一个方法(函数)什么的去获取,结果却不是.首先需要了解:num_matches: 当前返回的结果数,<= limit设置值.max_matches: 最多返回的结果数,默认为1000,用户最多只能看到1000条搜索结果.这个是在nf中设置的.total_found: 结果总数.索引中所有满足查询条件的文档总数.这个是在你查询的返回结果中的数组中有的.当然前提是你必须在query前设置:$this->sc->SetArrayResu

SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页

SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页 **SpringBoot+Mybatis使用Pagehelper分页插件自动分页,非常好用,不用在自己去计算和组装了.全部自动实现. 话不多说,直接上代码: 第一步pom文件配置添加jar: <!-- mybatis的分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>

小白的springboot之路(十五)、mybatis的PageHelper分页插件使用

0.前言 用mybatis,那么分页必不可少,基本都是用PageHelper这个分页插件,好用方便: 1.实现 1.1.添加依赖: <!-- 3.集成 mybatis pagehelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version

springmvc+mybatis 做分页sql 语句

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="ssmy.dao.UserDao"> <r