mybatis模糊查询并分页
时间: 2023-05-10 22:51:03 浏览: 178
Mybatis 是一种流行的 Java 持久化框架,它提供了许多方便的查询功能。模糊查询和分页查询都是实际开发中经常使用的功能,下面我们来介绍一下如何在 Mybatis 中进行模糊查询并分页。
对于模糊查询,我们可以使用 Mybatis 的动态 SQL 功能来实现。比如,我们需要查询名字中含有 "张" 的用户,可以使用以下语句:
```xml
<select id="findUsersByName" resultType="User">
SELECT * FROM user WHERE name LIKE #{name}
</select>
```
在上面的语句中,#{name} 是一个占位符,后面可以传入一个字符串来代替。在实际使用中,我们可以在传入字符串的前后加上 "%",表示模糊匹配。
```java
String name = "%张%";
List<User> users = mapper.findUsersByName(name);
```
上面的代码中,我们将 "%" 和查询条件串接在一起,并调用了一个 mapper 方法来执行查询。这样就可以实现简单的模糊查询了。
接下来,我们看看如何进行分页查询。Mybatis 内置了一个 RowBounds 类来实现分页查询。RowBounds 通过两个参数来指定查询的结果集范围,分别是 offset 和 limit。其中 offset 表示查询的起始位置,limit 表示查询的条数。
```java
RowBounds rowBounds = new RowBounds(offset, limit);
List<User> users = mapper.findUsers(rowBounds);
```
在上面的代码中,我们使用了 RowBounds 来进行分页查询。offset 表示查询的起始位置,limit 表示查询的条数。mapper.findUsers() 方法会返回一个 List,表示查询结果集。
如果我们需要同时进行模糊查询和分页查询,就可以将它们结合起来,比如:
```java
String name = "%张%";
int offset = 0;
int limit = 10;
RowBounds rowBounds = new RowBounds(offset, limit);
List<User> users = mapper.findUsersByName(name, rowBounds);
```
这样就可以同时进行模糊查询和分页查询了。在实际开发中,我们还可以将查询条件封装成一个对象,方便使用。比如:
```java
public class UserQuery {
private String name;
private int offset;
private int limit;
// getters 和 setters 略
public RowBounds getRowBounds() {
return new RowBounds(offset, limit);
}
}
UserQuery query = new UserQuery();
query.setName("%张%");
query.setOffset(0);
query.setLimit(10);
List<User> users = mapper.findUsersByName(query.getName(), query.getRowBounds());
```
总之, Mybatis 提供了非常方便的动态 SQL 功能和 RowBounds 分页功能,方便我们进行灵活的查询操作。在实际开发中,需要注意查询效率和代码复杂度的平衡,避免过度复杂的查询。
阅读全文
相关推荐















