PageHelper分页查询

Java猫

共 8939字,需浏览 18分钟

 · 2021-04-25

SpringBoot使用PageHelper分页插件

使用mybatis进行分页查询


注意:

可以看到Page本身也是个ArrayList,里面还包含了分页的各项参数。在调用分页查询时要先设置分页前提,比如,每页两行,查询第一页:

PageHelper.startPage(1,2);

在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。

Page<Book> bookss = mapper.getList();


依赖

        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- SpringBoot/MyBatis使用PageHelper分页控件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.13</version>
        </dependency>



Controller控制器

/**
 * Controller控制
 */

@RequestMapping("/book")
@RestController
public class BookController {

    //注入业务层
    @Autowired
    private BookService bookService;

    /**
     * 获取分页数据
     * @param pageNum 第几页
     * @param pageSize 每页显示多少条
     * @return 返回json数据
     */

    @RequestMapping("/fenye/{pageNum}/{pageSize}")
    @ResponseBody
    public List<Book> fenye(@PathVariable("pageNum") int pageNum,@PathVariable("pageSize")int pageSize){

        List<Book> list = bookService.getList(pageNum,pageSize);

        return list;
    }
}

使用RestFul风格进行数据访问。


Service业务层接口:

    /**
     * 分页查询
     * @param pageNum  第几页
     * @param pageSize 每页个数
     * @return
     */

    @Override
    public List<Book> getList(int pageNum,int pageSize) {

        //获取sqlSession对象
        SqlSession session = sqlSessionFactory.openSession();
        //获取mapper接口
        BookDao mapper = session.getMapper(BookDao.class);
        //分页数据处理           第几页      每页个数
        PageHelper.startPage(2,5);
        //执行分页查询
        Page<Book> books = mapper.getList();

        //返回List结果对象,而不是返回Page对象
        List<Book> list = new ArrayList<>();

        System.out.println("第几页:"+books.getPageNum());
        System.out.println("每页数量:"+books.getPageSize());
        System.out.println("总页数:"+books.getPages());
        System.out.println("总记录数:"+books.getTotal());

        for (Book book: books) {
            System.out.println("查询结果:"+book);
            list.add(book);
        }

        return list;
    }

使用mapper接口进行数据查询,查询之前先进行分页处理。


业务接口实现的方法:

/**
 * 业务层接口实现
 */

@Service
public class BookServiceImpl implements BookService {

    //mybatis分页需要使用到sqlSession对象
    @Autowired
    private SqlSessionFactory sqlSessionFactory;

    /**
     * 分页查询
     * @param pageNum  第几页
     * @param pageSize 每页个数
     * @return List集合
     */

    @Override
    public List<Book> getList(int pageNum,int pageSize) {

        //获取sqlSession对象
        SqlSession session = sqlSessionFactory.openSession();
        //获取mapper接口
        BookDao mapper = session.getMapper(BookDao.class);
        //分页数据处理        第几页      每页个数
        PageHelper.startPage(pageNum,pageSize);
        //执行分页查询
        Page<Book> books = mapper.getList();

        //返回List结果对象,而不是返回Page对象
        List<Book> list = new ArrayList<>();

        System.out.println("第几页:"+books.getPageNum());
        System.out.println("每页数量:"+books.getPageSize());
        System.out.println("总页数:"+books.getPages());
        System.out.println("总记录数:"+books.getTotal());

        for (Book book: books) {
            System.out.println("查询结果:"+book);
            list.add(book);
        }

        return list;
    }
}


Dao层接口:

/**
 * 图书服务接口
 */

public interface BookService {

    public Book findById(Book book);

    public List<Book> findAll();

    public Integer addBook(Book book);

    //分页查询
    public List<Book> getList(int pageNum,int pageSize);
}


mapper.xml文件

<?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">

<!--namespace绑定mapper接口(重要!!!)-->
<mapper namespace="com.hbm.dao.BookDao">
  
    <!--分页查询-->
    <select id="getList" resultType="book">
        select * from Book
    </select>
  
</mapper>




测试结果:




提示:

本次测试环境为SpringBoot+mybatis。


总结:

注意一下流程就好了,Dao层的接口使用的是分页插件的Page对象,返回的数如果是List集合,可以在业务层取出来再返回给视图层。




浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报