mybatis example 怎么like模糊查询
时间: 2025-06-06 18:18:15 浏览: 14
### MyBatis 中实现 LIKE 模糊查询的示例和方法
在 MyBatis 中,可以通过多种方式实现 LIKE 模糊查询。以下是几种常见的实现方式,并结合提供的引用内容进行详细说明。
#### 1. 使用 `Example` 类实现模糊查询
MyBatis 的 `Example` 类可以动态生成 SQL 语句,支持复杂的条件组合。对于模糊查询,可以使用 `like` 方法[^1]。例如:
```java
TestTableExample example = new TestTableExample();
example.createCriteria().andField1Like("value%");
```
上述代码将生成类似于以下的 SQL 语句:
```sql
SELECT * FROM test_table WHERE field1 LIKE 'value%';
```
如果需要更复杂的条件,可以结合多个 `or` 和 `and` 条件链式调用。例如:
```java
TestTableExample example = new TestTableExample();
example.or().andField1Like("value%").andField2IsNull();
example.or().andField3NotEqualTo(9).andField4IsNotNull();
```
这将生成一个包含多条件的复杂查询语句。
---
#### 2. 在 XML 映射文件中使用 `<if>` 标签
当使用 XML 配置时,可以通过 `<if>` 标签动态判断参数是否为空,然后添加模糊查询条件[^2]。例如:
```xml
<select id="selectByLike" parameterType="map" resultType="TestTable">
SELECT * FROM test_table
<where>
<if test="field1 != null and field1 != ''">
AND field1 LIKE CONCAT('%', #{field1}, '%')
</if>
</where>
</select>
```
此配置允许根据传入的参数动态生成 SQL 查询。如果 `field1` 不为空,则会添加模糊查询条件。
---
#### 3. 使用 `#{}` 参数占位符
另一种常见的方式是直接在 SQL 中使用 `#{}` 占位符传递参数,并手动拼接 `%` 符号。例如:
```xml
<select id="selectByLike" parameterType="string" resultType="TestTable">
SELECT * FROM test_table WHERE field1 LIKE CONCAT('%', #{param}, '%')
</select>
```
这种方式简单明了,适用于简单的模糊查询场景[^2]。
---
#### 4. 在 Java 代码中预处理参数
为了减少 SQL 中的复杂性,可以在 Java 代码中对参数进行预处理,将 `%` 添加到参数值中。例如:
```java
String param = "%" + userInput + "%";
List<TestTable> results = mapper.selectByLike(param);
```
对应的 XML 配置如下:
```xml
<select id="selectByLike" parameterType="string" resultType="TestTable">
SELECT * FROM test_table WHERE field1 LIKE #{param}
</select>
```
这种方式将逻辑封装到 Java 层,使 SQL 更加简洁。
---
### 注意事项
- 确保用户输入的数据经过适当的安全处理,以防止 SQL 注入攻击。
- 如果使用 `CONCAT` 函数,请确保数据库支持该函数(如 MySQL)。
- 对于复杂的查询需求,推荐使用 `Example` 类或动态 SQL。
---
阅读全文
相关推荐


















