在 MyBatis 中进行模糊查询可以使用 SQL 的 LIKE 语句结合参数来实现。具体的实现方式取决于你是使用注解方式还是 XML 方式进行查询语句的定义。
以下是两种常见的方式:
1. 注解方式:
```java
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE name LIKE CONCAT('%', #{keyword}, '%')")
List<User> searchUsersByKeyword(@Param("keyword") String keyword);
}
```
在上述示例中,使用 `SELECT * FROM user WHERE name LIKE CONCAT('%', #{keyword}, '%')` SQL 语句进行模糊查询。使用 `CONCAT` 函数将查询参数与 `'%'` 进行拼接,实现模糊查询。
2. XML 方式:
```xml
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
<select id="searchUsersByKeyword" resultType="com.example.User">
SELECT * FROM user WHERE name LIKE CONCAT('%', #{keyword}, '%')
</select>
</mapper>
```
在上述示例中,使用 `<select>` 标签定义了查询语句。通过 SQL 语句 `SELECT * FROM user WHERE name LIKE CONCAT('%', #{keyword}, '%')` 进行模糊查询。
无论使用哪种方式,关键是在 SQL 语句中使用 `LIKE` 进行模糊匹配并结合 `%` 通配符,这样就可以实现模糊查询。同时,根据具体的业务需求,可以在 `#{keyword}` 处传入不同的参数来搜索匹配的数据。
需要注意的是,在使用模糊查询时,可能需要考虑通配符的使用以及 SQL 注入的风险。可以对输入参数进行合理的校验和过滤,或者使用预编译语句和占位符来防止 SQL 注入攻击。