mybats 分页插件 pageHelper 入门使用示例
1、介绍
mybytis 的分页插件pageHelper是一个非常容易使用的后端分页插件,它的原理是用拦截器对sql语句进行拦截,然后修改从而实现分页的功能。下面通过i哟个简单的例子来看看pageHelper如何上手。
项目开源地址及官方文档 pageHelper官网
2、入门示例
配置:
- 添加maven依赖,在pom.xml中加入以下语句
<!--mybatis的分页插件,pageHelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.0</version> </dependency>
-
在spring配置文件中,配置sqlSessionFactory的时候,添加pageHelper插件
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:com/xiao/springMVC/xml/mybatis/mybatis-config.xml"/> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <!--什么都不配,使用默认的配置--> <value></value> </property> </bean> </array> </property> </bean>
使用:
-
编写实体类
package com.xiao.springMVC.bean; import java.io.Serializable; public class Car implements Serializable { private int carid; private String brand; private String model; private String number; private String owner; private String phone; public int getCarid() { return carid; } public void setCarid(int carid) { this.carid = carid; } public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public String getModel() { return model; } public void setModel(String model) { this.model = model; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getOwner() { return owner; } public void setOwner(String owner) { this.owner = owner; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } @Override public String toString() { return "Car{" + "carid=" + carid + ", brand='" + brand + '\'' + ", model='" + model + '\'' + ", number='" + number + '\'' + ", owner='" + owner + '\'' + ", phone='" + phone + '\'' + '}'; } }
-
映射接口CarDao
package com.xiao.springMVC.dao; import com.xiao.springMVC.bean.Car; import java.util.List; public interface carDao { List<Car> getCarList(); }
-
Mapper文件Car.xml(mybatis配置,数据库建表等过程省略)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xiao.springMVC.dao.carDao"> <select id="getCarList" resultType="com.xiao.springMVC.bean.Car"> SELECT * FROM car </select> </mapper>
(可以发现,使用pageHelper插件,以上的文件与不是用时没有任何区别)
-
测试类,使用基本的pageHelper功能需要两个参数 当前页和每页的记录数量。
package com.xiao.springMVC.bean; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.xiao.dubbo.demo.GetUserInfoByIDService; import com.xiao.springMVC.dao.IUser; import com.xiao.springMVC.dao.carDao; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Car> cars = new ArrayList<Car>(); PageInfo pageInfo = ListCar(3,10); cars = pageInfo.getList(); for(Car car:cars){ System.out.println(car.toString()); } long total = pageInfo.getTotal(); System.out.println("Total:"+total); } public static PageInfo<Car> ListCar(int pageNo,int pageSize){ //Mapper接口方式的调用 PageHelper.startPage(pageNo,pageSize); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml"); carDao carMapper = (carDao) context.getBean("carMapper"); List<Car> carList = carMapper.getCarList(); PageInfo<Car> pageInfo = new PageInfo<Car>(carList); return pageInfo; } }
-
运行结果
可以看到,如果按照每页10条数据来算,第三页就应该是21-30这10条数据。
例子结束。