在 MyBatis 中,可以通过编写自定义的分页查询语句来实现分页功能。以下是实现分页查询的步骤:
public class PageParam {
private int pageNum; // 当前页码
private int pageSize; // 每页显示的记录数
// 构造方法、getter 和 setter 省略
}
首先,需要在 MyBatis 的映射文件中添加一个 resultMap,用于映射查询结果到实体类。例如,假设有一个 User 实体类,可以创建如下 resultMap:
<resultMap id="UserResultMap" type="com.example.entity.User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="email" column="email"/>
</resultMap>
接下来,编写分页查询语句。这里以 MySQL 数据库为例,使用 rowNum 分页:
<select id="selectPageUser" resultMap="UserResultMap">
SELECT * FROM user
ORDER BY id
LIMIT #{pageNum}, #{pageSize}
</select>
注意,这里的 #{pageNum} 和 #{pageSize} 是分页参数,它们将在运行时被替换为实际的值。
在 DAO 层,创建一个方法,接收分页参数作为参数,并返回分页查询结果。例如:
public interface UserDao {
List<User> selectPageUser(PageParam pageParam);
}
在 Service 层,注入 UserDao,并调用 selectPageUser 方法进行分页查询。例如:
@Service
public class UserService {
@Autowired
private UserDao userDao;
public PageInfo<User> selectPageUser(int pageNum, int pageSize) {
PageParam pageParam = new PageParam();
pageParam.setPageNum(pageNum);
pageParam.setPageSize(pageSize);
List<User> userList = userDao.selectPageUser(pageParam);
int total = userDao.selectUserCount(); // 查询总记录数
return new PageInfo<>(pageNum, pageSize, total, userList);
}
}
这里,我们使用了 PageInfo 类来封装分页查询结果,包括当前页码、每页显示的记录数、总记录数和查询结果列表。你需要自己实现 PageInfo 类,或者使用第三方分页库,如 MyBatis-Plus。
现在,你可以在你的应用程序中使用分页查询功能了。只需传入当前页码和每页显示的记录数,即可获取分页后的查询结果。