mybatis模糊查询后分页
时间: 2023-07-28 22:25:44 浏览: 83
要实现模糊查询后的分页,在 MyBatis 中可以使用两个关键字:`like` 和 `limit`。
首先,在 Mapper 文件中定义 SQL 语句,如下所示:
```xml
<select id="findByName" resultMap="userMap">
select * from user where username like CONCAT('%',#{username},'%')
limit #{startIndex},#{pageSize}
</select>
```
其中,`username` 是模糊查询的关键字,`startIndex` 和 `pageSize` 分别表示分页的起始位置和每页显示的记录数。
接着,在 DAO 层中调用 Mapper 中定义的方法:
```java
public List<User> findByName(String username, int startIndex, int pageSize) {
try (SqlSession session = getSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
return mapper.findByName(username, startIndex, pageSize);
}
}
```
最后,在 Controller 层中处理请求,获取查询结果并返回给前端:
```java
@GetMapping("/users")
public String findUsers(Model model,
@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "size", defaultValue = "10") int size,
@RequestParam(value = "username", defaultValue = "") String username) {
int startIndex = (page - 1) * size;
List<User> users = userService.findByName(username, startIndex, size);
model.addAttribute("users", users);
// 其他处理逻辑
return "user-list";
}
```
其中,`page` 和 `size` 分别表示当前页码和每页显示的记录数,`username` 表示模糊查询的关键字。需要注意的是,`startIndex` 的计算方式为 `(page - 1) * size`。
阅读全文