温馨提示×

如何在Mybatis中实现分页查询

小樊
81
2024-10-13 15:33:37
栏目: 编程语言

在 MyBatis 中,可以通过编写自定义的分页查询语句来实现分页功能。以下是实现分页查询的步骤:

  1. 创建分页参数类(PageParam):
public class PageParam {
    private int pageNum; // 当前页码
    private int pageSize; // 每页显示的记录数

    // 构造方法、getter 和 setter 省略
}
  1. 在 MyBatis 的映射文件中编写分页查询语句:

首先,需要在 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} 是分页参数,它们将在运行时被替换为实际的值。

  1. 在 DAO 层编写分页查询方法:

在 DAO 层,创建一个方法,接收分页参数作为参数,并返回分页查询结果。例如:

public interface UserDao {
    List<User> selectPageUser(PageParam pageParam);
}
  1. 在 Service 层调用分页查询方法:

在 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。

现在,你可以在你的应用程序中使用分页查询功能了。只需传入当前页码和每页显示的记录数,即可获取分页后的查询结果。

0