mapper文件模糊查询语句
时间: 2025-05-24 22:53:51 浏览: 18
### 如何在Mapper文件中实现MyBatis的模糊查询
在MyBatis框架中,`mapper.xml` 文件用于定义SQL语句并与Java对象映射。为了实现模糊查询功能,通常会使用 `LIKE` 关键字配合 `%` 符号来匹配部分字符串[^1]。
以下是具体实现方法:
#### 使用 `#{}` 参数占位符
通过传递参数到SQL中的方式可以动态构建模糊查询条件。下面是一个简单的例子展示如何在 `SELECT` 查询中加入模糊匹配逻辑:
```xml
<select id="selectUsersByFuzzyName" parameterType="string" resultType="User">
SELECT * FROM users WHERE name LIKE CONCAT('%', #{name}, '%')
</select>
```
在这个例子中,`CONCAT('%', #{name}, '%')` 动态地将百分号附加到传入的名字两端,从而实现了前后缀通配的效果[^2]。
#### 利用 `<if>` 标签增强灵活性
如果需要支持更复杂的场景比如可选的模糊查询,则可以通过MyBatis内置的动态SQL标签 `<if>` 来控制条件是否生效:
```xml
<select id="findArticlesWithTitleOrContentLike" parameterType="map" resultType="Article">
SELECT *
FROM articles
<where>
<if test="title != null and title != ''">
AND title LIKE CONCAT('%', #{title}, '%')
</if>
<if test="content != null and content != ''">
OR content LIKE CONCAT('%', #{content}, '%')
</if>
</where>
</select>
```
这里展示了当 `title` 或者 `content` 字段有值的时候才会应用相应的模糊搜索条件[^3]。
#### 注意事项
- **防止SQL注入**: 使用 `#{}` 而不是 `${}` 是安全的做法因为前者会对输入做预处理而后者则直接嵌套原始数据可能导致安全隐患。
- **性能考量**: 过度依赖于模糊查询可能会影响数据库索引效率, 特别是在大数据量表上执行前导%模式(`%value`)时应格外注意其带来的扫描开销.
```java
// Java调用示例
String partialName = "John";
List<User> results = sqlSession.selectList("selectUsersByFuzzyName", partialName);
```
以上代码片段演示了如何从Java端向Mapper发送请求并获取符合条件的结果集[^4].
阅读全文
相关推荐


















