在Spring结合Mybatis进行开发时,实现模糊查询是一个常见需求。在Mybatis中,LIKE查询可以通过多种方式实现,这取决于你的查询参数如何传递给Mybatis的SQL映射器。以下是实现模糊查询的几种常见方法:

1. 在Mapper接口中直接使用#{}进行拼接

这种方法直接在Mapper的XML文件中使用LIKE关键字,然后通过#{}传递参数,你可以在传递参数之前,在Java代码中拼接好模糊查询所需的百分比符号(%)。

Mapper接口XML示例:

Java代码中调用:

// 假设有一个Mapper接口方法叫findByName

List results = yourMapper.findByName("%" + name + "%");

2. 在XML中使用CONCAT函数

如果你不想在Java代码中拼接字符串,你可以在XML映射文件中使用SQL的CONCAT函数来拼接百分比符号和参数。

Mapper接口XML示例:

3. 使用标签

Mybatis提供了标签,允许你在XML文件中创建一个变量,用于拼接字符串或执行其他逻辑操作。这样可以在不修改Java代码的情况下实现字符串的拼接。

Mapper接口XML示例:

4. 使用${}进行拼接(不推荐)

虽然可以使用${}进行字符串拼接以实现LIKE查询,但这种方法容易导致SQL注入攻击,因此不推荐使用。

Mapper接口XML示例(不推荐):

5. 使用MyBatis的动态SQL choose、when、otherwise

虽然不是专门用于LIKE查询,但choose、when、otherwise标签可以用于构建复杂的查询逻辑,包括根据条件选择是否执行模糊查询。

Mapper接口XML示例:

另外还有在调用层代码一些处理方式

6. 在Java代码中拼接模糊查询的条件

你也可以在调用Mapper接口的方法之前,就已经将参数值处理成模糊查询所需的格式。

public interface YourMapper {

List findByName(@Param("name") String name);

}

// 调用Mapper的地方

String searchName = "%" + name + "%";

List result = yourMapper.findByName(searchName);

7. 使用@Select注解进行模糊查询

在使用Mybatis Spring时,可以直接在Mapper接口的方法上使用@Select注解来定义SQL语句,从而实现模糊查询。

public interface YourMapper {

@Select("SELECT * FROM your_table WHERE name LIKE CONCAT('%', #{name}, '%')")

List findByName(@Param("name") String name);

}

以上是实现Mybatis中LIKE模糊查询的一些常见方法。选择合适的方法取决于具体的应用场景和个人偏好。在实际使用中,要注意防止SQL注入的风险,尤其是在直接拼接字符串构造查询条件时。

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: