前言:一句话简单,方便,好用,那为什么不用呢?
这里面的测试项目用的是idea写的maven项目,所以基本的架包配置都在pom.xml中。并且底层用的是mybatis自动生成的mapper文件来查询数据库,如果各位同胞用的是eclipse开发或者基于约定来写的查询方法的话,也可以稍稍浏览一下,毕竟原理大家都是差不多的,希望对大家有帮助
当然如果你比本小白还小白的话,像项目都没有创建或者什么mapper文件,数据库配置文件conf.xml都没有的话,就真的不浪费你的时间,快转车吧!
- 首先以为maven项目易于管理,所以我们在pom.xml里面加入一个架包,写上下面这段代码
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.9</version>
</dependency>
注意更改之后要import changes哦,右下角
- 相信大家的项目应该和我一样有一个conf.xml吧。在你的文件里填入下面代码
<!--分页拦截器-->
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<property name="param1" value="value1"/>
</plugin>
</plugins>
这段代码是用来拦截你的sql语句的,即如果你要执行对数据库的操作时,会在你的sql后面加入一些东西,以达到分页的目的,至于里面的参数配置,暂时不会用到,如果你需要的,可以专车或者去官网查询
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
<!--分页拦截器-->
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<property name="param1" value="value1"/>
</plugin>
</plugins>
- 创建测试类进行测试
import com.example.mapper.UserMapper;
import com.example.model.User;
import com.example.util.MybatisUtils;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import java.util.List;
public class test {
@Test
public void test1(){
SqlSessionFactory factory = MybatisUtils.getFactory();
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
/***
* 分页实现,PageHelper拦截器,在查寻数据库之前会在sql后面增加一些东西
*/
/**
* 在pages中会有关于分页的所有信息
* */
/*第一种,加上下面这句话,代表你后面那句查询或查询第二页的数据,每页两条,但是没有返回你可能需要的分页信息,因此第二种方法更强大*/
PageHelper.startPage(2, 2);
//第二页的两条数据信息都在list中了,for遍历查看进行
List<User> list = userMapper.selectByExample(null);
/*第二种,查询到的所有信息,包括数据,分页信息,上一页,下一页,等都在page2中,要什么的话自己去取就行*/
Page<User> page2 = PageHelper.startPage(2, 3).doSelectPage(()-> userMapper.selectByExample(null));
/*在这里将分页信息拿出来*/
List<User> users = page2.getResult();
/**
* 遍历查询到的users
* */
for(User user:users){
System.out.println(user);
}
}
}
附上自己的结果
如果你对结果表示怀疑,为什么会有三条数据呢?那我觉得你还是很认真的看了,因为我写了两种方法,第二种查询的时第二页的三条数据,而我也只打印第二种,所以就三条喽
PS:谢谢!如果上面的操作有什么不正确的地方或者有什么地方没有理清楚,欢迎留言指正,一起交流!