1.RowBounds是mybatis提供的一个内存分页/逻辑分页的工具;
2.逻辑分页和物理分页
- 逻辑分页:一次性从库里捞出所有数据,在内存中进行分页,只有当重新请求第一页时,所有数据才会进行一次更新;(目前测试出来是这样,不清楚是否有机制会刷新所有的查询数据)
- 物理分页:直接在sql查询的时候进行limit,获取仅需要的部分数据,实时查询最新的数据。
3.RowBounds解决的问题,以及本身存在的问题:
- 物理分页实时查询最新的数据导致当数据更新频率较高时,出现数据重复或者数据丢失的问题,如果此时选择逻辑分页,则不会出现上述问题,但是只有返回第一页进行刷新时才能拿到最新的数据
- 逻辑分页,当一次从数据库查询的数据量较大的情况下,十分影响性能,仅针对单次查询的总数据量较小的时候使用
4.使用:
只需要在接口上加上RowBounds参数即可:有两个参数:offset和limit
定义:List<A> testLimit(RowBounds rowBounds); 使用:testMapper.testLimit(new RowBounds(0, 10))