阅读量:123
在 MyBatis 中,你可以使用 标签结合 SQL 语句中的 LIMIT 和 OFFSET 子句来实现分页查询。以下是一个简单的示例:
- 首先,在你的 MyBatis 配置文件(例如:
mybatis-config.xml)中,添加一个名为pageSize的参数,用于设置每页显示的记录数:
<configuration>
...
<settings>
<setting name="pageSizeZero" value="true"/>
</settings>
...
</configuration>
- 在你的 Mapper XML 文件中,编写一个分页查询的 SQL 语句。使用
标签遍历查询参数,并使用LIMIT和OFFSET子句实现分页:
<mapper namespace="com.example.dao.UserDao">
<select id="selectPage" parameterType="map" resultType="com.example.model.User">
SELECT * FROM user
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null and name != ''">
AND name LIKE CONCAT('%', #{name}, '%')
</if>
</where>
LIMIT #{pageSize} OFFSET #{offset}
</select>
</mapper>
在这个示例中,#{pageSize} 和 #{offset} 是传递给 SQL 语句的分页参数。#{offset} 的值可以通过计算 #{pageSize} * (pageNum - 1) 得到,其中 pageNum 是当前页码。
- 在你的 Mapper 接口中,添加一个分页查询的方法:
public interface UserDao {
List selectPage(Map params) ;
}
- 最后,在你的 Service 或 Controller 层,调用分页查询方法并传入相应的参数:
public class UserService {
@Autowired
private UserDao userDao;
public List getUsersByPage(int pageNum, int pageSize) {
Map params = new HashMap<>();
params.put("pageNum", pageNum);
params.put("pageSize", pageSize);
return userDao.selectPage(params);
}
}
现在,你可以通过调用 getUsersByPage 方法并传入页码和每页显示的记录数来获取分页查询的结果。