mybats 分页插件 pageHelper 入门使用示例
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条数据。
例子结束。
还没有评论,来说两句吧...