limt和(pagehelper或者page分页插件)的区别

limit

mysql当中的分页SQL应该怎么写?

①使用limit关键字,语法格式:limit startIndex,pageSize

②第⼀个数字:startIndex(起始下标,下标从0开始)

③第⼆个数字:pageSize(每⻚显示的记录条数)

④假设已知⻚码pageNum,还有每⻚显示的记录条数pageSize,那么第⼀个数字是可以动态的获取的:startIndex = (pageNum - 1) * pageSize

(3)标准通⽤的mysql分⻚SQL:

select * 
from tableName ...... 
limit (pageNum - 1) * pageSize, pageSize

Page是MybatisPlus的分页插件,使用简单,就不做介绍了。

PageHelper插件

使⽤PageHelper插件进⾏分⻚,更加的便捷!

第一步:pom.xml中引入依赖


     com.github.pagehelper
     pagehelper
     5.3.1

第二步:在mybatis-config.xml⽂件中配置插件



    

第三步:编写Java代码

三兄弟之一:CarMapper接口,编写方法

package com.bjpowernode.mybatis.mapper;
import com.bjpowernode.mybatis.pojo.Car;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface CarMapper {
    /**
     * 查询所有的Car,通过分页查询插件PageHelper完成
     * @return
     */
    List selectAll();
}

三兄弟之二:CarMapper.xml文件,编写sql语句

使用了分页插件PageHelper就不需要使用limit关键字了,直接正常查询即可!



 
  

三兄弟之三:CarMappeTest类,用来编写测试类

注:在执行DQL语句之前,开启分页功能!

调用PageHelper的startPage(pageNum,pageSize)方法:

①第一个参数是页码pageNum

②第二个参数还是每页显示的记录条数pageSize

package com.bjpowernode.mybatis.test;
import com.bjpowernode.mybatis.mapper.CarMapper;
import com.bjpowernode.mybatis.pojo.Car;
import com.bjpowernode.mybatis.utils.SqlSessionUtil;
import com.github.pagehelper.PageHelper;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class CarMapperTest {
    @Test
    public void testSelectAll(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        CarMapper mapper = sqlSession.getMapper(CarMapper.class);
        // 在执行DQL语句之前,开启分页
        int pageNum = 2; // 第二页
        int pageSize = 3; // 每页显示的条数
        PageHelper.startPage(pageNum,pageSize);
        List cars = mapper.selectAll();
        cars.forEach(car -> System.out.println(car));
        sqlSession.close();
    }
}

执行结果:实际上PageHelper是在SQL语句后面自动加上了limit关键字

列举几个常用的属性:

①pageNum-页码, pageSize-每页显示的记录, size=3, startRow-从第几条数据开始, endRow-从第几条数据结束, total-总记录条数, pages-页数,

②prePage-上一页的页码, nextPage-下一页的页码, isFirstPage-,是否是第一页 isLastPage-是否是最后一页, hasPreviousPage-有没有上一页, hasNextPage-有没有下一页

③navigatePages-导航页码, navigateFirstPage-导航第一页是几, navigateLastPage-导航最后一页是几, navigatepageNums-存在数据的导航页

总结:

limit和分页插件本质是一个东西,只不过分页插件在查询语句后面添加了limit。

 

你可能感兴趣的:(mysql,sql,数据库)