刘涛给孩子网站做的广告,汽车之家车型大全,如何自助建网站,网站开发英语词汇1. MyBatis 中如何实现分页 #xff1f;
MyBatis 中的分页有两种实现方式#xff1a;物理分页 or 逻辑分页
【物理分页】
1.1 原生 SQL 物理分页
物理分页是通过 SQL 查询语句#xff0c;LIMIT 语法进行分页的#xff0c;它是在数据库引擎层面实现的。
select id
MyBatis 中的分页有两种实现方式物理分页 or 逻辑分页
【物理分页】
1.1 原生 SQL 物理分页
物理分页是通过 SQL 查询语句LIMIT 语法进行分页的它是在数据库引擎层面实现的。
select idgetAll resultTypeUserInfoselect * from userinfolimit #{limit} offset #{offset}
/select
1.2 PageHepler 插件实现分页
物理分页还可以使用 PageHepler 插件来实现。
代码示例
service、dao、xml 层查询整表数据 - getALl()service 接口以及实现类新增分页方法 getAllByPage()controller 层调用分页方法即可。
Resource
private UserMapper userMapper;public ListUserInfo getAll() {return userMapper.getAll();
}public PageInfoUserInfo getAllByPage(Integer pIndex, Integer pSize) {PageHelper.startPage(pIndex, pSize); // 关键代码ListUserInfo list userMapper.getAll();PageInfoUserInfo pageInfo new PageInfo(list); // 关键代码return pageInfo;
}
【逻辑分页】 使用 MyBatis 自带的 RowBounds 进行分页就是逻辑分页它是一次性将符合条件的所有数据查询出来放到内存中然后在内存中进行分页的而且内存中是没有索引的所以数据量非常大的时候不建议使用。
关键代码
RowBounds rowBounds new RowBounds(offset,limit);
ListUserInfo results sqlSession.selectList(getUserList,null,rowBounds);
面试官问RowBounds 是一次性查询全部数据吗 答案是否。首先 MyBatis 是对 JDBC 的封装而在 JDBC 驱动中有一个 Fetch Size 的配置它规定了每次最多从数据库中查询出多少条数据。这个 Fetch Size 的默认值是 1000.
于是我们可以在 xml 的 select 标签中添加 fetchSize 属性来指定 Fetch Size 的值
select idgetAll resultTypeUserInfo fetchSize100select * from userinfo;
/select