mybatis查询条件有对象,怎么手写分页查询
时间: 2024-05-15 22:13:22 浏览: 86
在 MyBatis 中手写分页查询可以使用 LIMIT 和 OFFSET 关键字来实现。具体步骤如下:
1. 编写 SQL 语句,包括查询条件和排序方式,例如:
```sql
SELECT * FROM user WHERE age > #{age} ORDER BY id DESC
```
2. 在 SQL 语句后面添加 LIMIT 和 OFFSET 关键字,分别表示查询的数量和起始位置。假设每页显示 10 条数据,当前页为第 page 页,则:
```sql
SELECT * FROM user WHERE age > #{age} ORDER BY id DESC LIMIT #{pageSize} OFFSET #{offset}
```
其中,#{pageSize} 表示每页显示的数量,#{offset} 表示起始位置,可以通过以下公式计算:
```
offset = (page - 1) * pageSize
```
3. 在 MyBatis 的 Mapper 文件中定义一个方法,接收查询条件、起始位置和查询数量作为参数,例如:
```java
List<User> selectByPage(@Param("age") int age, @Param("offset") int offset, @Param("pageSize") int pageSize);
```
4. 在对应的 Mapper XML 文件中编写 SQL 语句,并使用 #{offset} 和 #{pageSize} 占位符来替换上面的 SQL 语句中的 LIMIT 和 OFFSET 关键字,例如:
```xml
<select id="selectByPage" resultMap="userMap">
SELECT * FROM user WHERE age > #{age} ORDER BY id DESC LIMIT #{pageSize} OFFSET #{offset}
</select>
```
5. 在代码中调用该方法,传入查询条件、起始位置和查询数量即可完成分页查询,例如:
```java
int page = 1; // 当前页数
int pageSize = 10; // 每页显示的数量
int offset = (page - 1) * pageSize; // 起始位置
List<User> userList = userMapper.selectByPage(age, offset, pageSize);
```
阅读全文