MyBatis提供了以下几种常用的分页方式:
1. 基于传统数据库的分页方式:
- 使用LIMIT和OFFSET:在SQL语句中使用LIMIT关键字设置每页显示的记录数,使用OFFSET关键字设置偏移量。示例:`SELECT * FROM user LIMIT 10 OFFSET 20`,表示查询第21到第30条记录。
- 使用ROWNUM(Oracle):在SQL语句中使用ROWNUM关键字进行分页查询。示例:`SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM user) A WHERE ROWNUM <= 30) WHERE RN >= 21`,表示查询第21到第30条记录。
2. 基于物理分页插件的分页方式:MyBatis提供了一些物理分页插件,如MyBatis-Plus、PageHelper等,可以直接在代码中使用这些插件来实现分页查询。这些插件通常提供了更加简单易用的分页方式,无需在SQL语句中编写复杂的分页逻辑。
实现分页可以按照以下步骤进行:
1. 在Mapper接口中定义分页查询方法。方法参数中需要包含页码(page)和每页记录数(size)等必要的分页参数。
2. 在Mapper XML配置文件中编写分页查询的SQL语句。根据数据库类型和个人需求,选择合适的分页方式。
3. 在Java代码中调用Mapper接口中定义的分页查询方法。传入合适的分页参数,执行分页查询。
以下是一个示例:
在Mapper接口中定义分页查询方法:
```java
public interface UserMapper {
List<User> selectUserByPage(@Param("offset") int offset, @Param("size") int size);
}
```
在Mapper XML配置文件中编写分页查询的SQL语句:
```xml
<select id="selectUserByPage" resultType="User">
SELECT * FROM user
LIMIT #{offset}, #{size}
</select>
```
在Java代码中调用Mapper接口中定义的分页查询方法:
```java
int page = 2; // 第2页
int size = 10; // 每页10条记录
int offset = (page - 1) * size;
List<User> userList = userMapper.selectUserByPage(offset, size);
```
在上述示例中,我们通过定义selectUserByPage方法来进行分页查询。在SQL语句中使用LIMIT关键字来设置每页记录数和偏移量,通过调用selectUserByPage方法并传入分页参数,实现分页查询。
需要注意的是,在实际应用中,分页查询还需要考虑总记录数、总页数的计算,并结合前端页面的展示进行合理的分页展示。可以使用物理分页插件或手动计算的方式来完成这部分逻辑。