阅读量:0
在 MyBatis 中,可以通过编写自定义的分页查询语句来实现分页功能。以下是实现分页查询的步骤:
- 创建分页参数类(PageParam):
public class PageParam { private int pageNum; // 当前页码 private int pageSize; // 每页显示的记录数 // 构造方法、getter 和 setter 省略 }
- 在 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} 是分页参数,它们将在运行时被替换为实际的值。
- 在 DAO 层编写分页查询方法:
在 DAO 层,创建一个方法,接收分页参数作为参数,并返回分页查询结果。例如:
public interface UserDao { List<User> selectPageUser(PageParam pageParam); }
- 在 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。
现在,你可以在你的应用程序中使用分页查询功能了。只需传入当前页码和每页显示的记录数,即可获取分页后的查询结果。