MyBatis的分页功能

们在进行查询时,很多时候会用到分页的情况,根据前端传过来的数据进行查询,比如需要查询第三页的内容:

通过MyBatis的话,我们可以通过分页插件进行使用,首先我们需要先引入对应的jar包,配置对应的内容,然后就可以进行使用对应分页的功能

使用maven工程中的pom.xml配置文件,进行引入对应的jar包,

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.4</version>
</dependency>

 然后再我们的MyBatis中的全局配置文件配置分页的插件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 配置分页插件 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->        
            <property name="dialect" value="mysql"/>
        </plugin>
    </plugins>

</configuration>

这样我们就把对应的分页插件配置完成

我们需要注意点是,核心配置文件的标签是有顺序先后的,看下图标签放在第一个位置,就报错了。按照顺序plugins应该放在标签前如果出现报错,可查看报错信息,确认plugins需要放在什么位置上

 测试分页代码的实现:

Mapper.java接口编写:

//分页查询
	public List<Teacher> selectAllTeacher();

Mapper.xml的SQL实现:

 

<!-- 分页查询 -->
   <select id="selectAllTeacher" resultType="teacher">
   		select * from teacher 

测试类:

 

@Test
	// 接口式编程===分页查询
	public void selectAllTeacher() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream is = Resources.getResourceAsStream(resource);
		// 初始化mybatis,创建SqlSessionFactory类实例
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
		// 创建Session实例
		SqlSession session = sqlSessionFactory.openSession();
		TeacherMapper mapper = session.getMapper(TeacherMapper.class);// 传入接口类,为他生成一个代理类=new
		  //设置分页参数
        //参数1:当前页
        //参数2:每页显示的条数
		PageHelper.startPage(2, 3);
		List<Teacher> teachers=mapper.selectAllTeacher();
		for (Teacher teacher : teachers) {
			System.out.println(teacher);
		}
	}

通过这个方式就可以直接将分页展示出来:

 

我们如何去使用这个插件呢:

通过

PageHelper.startPage(1, 10);进行查询第一页,每页显示数量为10

但是我们要记住的是,这个分页拦截器,需要放在我们需要进行SQL分页的语句前面,并且,该拦截器只会对遇到的第一个SQL进行分页,所以要记住这个所放置的位置;

当我们使用分页拦截器时,首先系统会先用count计算得出所要查询的表数据总数,根据pagesize、pagenum计算,通过limit进行分页操作

所以一般系统自己会先执行一条SQL语句

如果我们想获取分页的详细信息的话,我们首先可以先使用

PageInfo<Student> pageInfo = new PageInfo< Student >(list);

Info可调用到的方法相对会比较多

可以查询到更多的内容

public PageInfo<Teacher> selectAllPageQuery(String name, int pageNum, int pageSize) {
		PageHelper.startPage(pageNum, pageSize);
		List<Teacher> list =selectAll(name);
		PageInfo<Teacher> result = new PageInfo<Teacher>(list);
		return result;

	}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值