参考链接:https://www.cnblogs.com/guanghe/p/10026099.html
RowBounds对象有2个属性,offset和limit。
offset:起始行数(从0开始)
limit:需要的数据行数。如:new RowBounds(0,3)
JavaSE测试:
Mapper层:XxxMapper照常写sql语句
XxxMapper.java:
public List<User> findUserByPage(RowBounds rowBounds);
XxxMapper.xml
<select id="findUserByPage" resultType="user">
select * from t_user
</select>
test类:
/**测试RowBounds实现分页查询效果 :
* new RowBounds(offset,limit); //offset:起始行数,从0开始 ; limit:需要的数据行数
* 如:new RowBounds(0,5)*/
@Test
public void testFindUserPage() throws IOException {
int pageNo = 3; //当前页码
int pageSize = 3; //每页显示的条数
//1、加载spring容器|初始化容器
ApplicationContext app = new ClassPathXmlApplicationContext("classpath:applicationContextTest-Page.xml");
//2、从容器中获取对象
ItemsMapper userMapper = app.getBean(ItemsMapper.class);
//3、执行数据库业务方法
List<Items> itemsPage = userMapper.selectListByPage(new RowBounds((pageNo-1)*pageSize,pageSize));//offset:起始行数,从0开始
//limit:需要的数据行数
for(int i=0;i<itemsPage.size();i++){
System.out.println("分页测试结果:"+itemsPage.get(i));
}
}
使用RowBounds实现分页的大体思路:
先取出所有数据,然后游标移动到offset位置,循环取limit条数据,然后把剩下的数据舍弃。