分页
为什么要用分页?
- 较少数据的处理量
1. 使用Limit分页
语法:select * from user limit startIndex,pageSize;
select * from user limit 3; # [0,n]
编写接口UserMapper.java:
// 分页1
List<User> getUserByLimit(Map<String,Integer> map);
修改UserMapper.xml
<!-- 这里还是使用了ResultMap结果集映射 -->
<resultMap id="userMap" type="user">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserByLimit" resultMap="userMap" resultType="user">
select * from user limit #{startIndex},#{pageSize};
</select>
编写测试方法:
public class UserDaoTest {
static Logger logger = Logger.getLogger(UserDaoTest.class);
@Test
public void getUserByLimit(){
logger.debug("进入getUserByLimit");
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Integer> map = new HashMap<>();
map.put("startIndex",0);
map.put("pageSize",2);
List<User> userByLimit = mapper.getUserByLimit(map);
for (User user : userByLimit) {
logger.info(user);
}
sqlSession.close();
}
}
这里使用的以map为参数的传递方法。
2. 使用RowBounds分页
编写接口UserMapper.java:
// 分页2
List<User> getUserByRowBounds();
说明:不需要给参数,按照查询全部的方式编写接口。
修改UserMapper.xml
<resultMap id="userMap" type="user">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserByRowBounds" resultMap="userMap" resultType="user">
select * from user;
</select>
说明:用到了结果集映射
编写测试方法:
public class UserDaoTest {
static Logger logger = Logger.getLogger(UserDaoTest.class);
@Test
public void getUserByRowBounds(){
logger.debug("getUserByRowBounds");
SqlSession sqlSession = MyBatisUtils.getSqlSession();
// 使用RowBounds实现分页
RowBounds rowBounds = new RowBounds(0, 2);
List<User> userList = sqlSession.selectList("com.xxc.dao.UserMapper.getUserByRowBounds",null,rowBounds);
for (User user : userList) {
logger.debug(user);
}
sqlSession.close();
}
}
说明:使用sqlSession的selectList方法,将rowBounds作为一个参数。
3. 插件实现
PageHelper文档:
https://pagehelper.github.io/docs/howtouse/
了解即可。
4. Oracle数据库
我这里使用的Limit实现分页,适用于MySQL数据库,对于Oracle数据库可以参考如下:
https://blog.csdn.net/weixin_45842494/article/details/122676019