文章目录
一、 PageHelper是什么?
MyBatis 分页插件,它简化了你的数据分页操作
二、使用步骤
1.引入库
pom.xml 添加依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
2.spring中配置SqlSessionFactory 工厂中传入 PageHelper 的的插件
<!--Spring整合MyBatis框架,SqlSessionFactoryBean创建工厂对象-->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 传入PageHelper的插件 -->
<property name="plugins">
<array>
<!-- 传入插件的对象 -->
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<props>
<prop key="helperDialect">mysql</prop>
<prop key="reasonable">true</prop>
</props>
</property>
</bean>
</array>
</property>
</bean>
3. 在 MyBatis 配置 xml 中配置拦截器插件(spring非常强大,可以融合mybatis,所以可以直接用第一种)
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<property name="param1" value="value1"/>
</plugin>
</plugins>
4.具体使用
1.建立封装类,page,limit
public class StudentVo extends Student {
private Integer page;
private Integer limit;
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getLimit() {
return limit;
}
public void setLimit(Integer limit) {
this.limit = limit;
}
@Override
public String toString() {
return "StudentVo{" +
"page=" + page +
", limit=" + limit +
"} " + super.toString();
}
}
2.需要从前端js传输这两个数据 这是基于layui
3.Controller接受后调用service层,这是重点,如何使用 PageHelper
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentDao studentDao;
@Override
public ResultObject selectAll(StudentVo studentVo) {
//给PageHelper,page,limit
Page<Object> page = PageHelper.startPage(studentVo.getPage(), studentVo.getLimit());
//查询
List<Student> students = studentDao.selectAll();
// page.getTotal()查询出的数量
ResultObject resultObject = new ResultObject(0,"", page.getTotal(),students);
return resultObject;
}
}
三种方式,推荐第二种
//第一种,RowBounds方式的调用
List<Country> list = sqlSession.selectList("x.y.selectIf", null, new RowBounds(0, 10));
//第二种,Mapper接口方式的调用,推荐这种使用方式。
PageHelper.startPage(1, 10);
List<Country> list = countryMapper.selectIf(1);
//第三种,Mapper接口方式的调用,推荐这种使用方式。
PageHelper.offsetPage(1, 10);
List<Country> list = countryMapper.selectIf(1);