mybatis如何写模糊查询
时间: 2023-12-26 10:24:18 浏览: 129
在 MyBatis 中,可以使用通配符 `%` 来实现模糊查询。具体实现方式如下:
1. 在 SQL 语句中使用 `%` 通配符,例如:
```sql
SELECT * FROM user WHERE name LIKE '%张%';
```
2. 在 MyBatis 的 Mapper 文件中,使用 `${}` 占位符来传递参数,例如:
```xml
<select id="getUserByName" resultType="User">
SELECT * FROM user WHERE name LIKE '%${name}%'
</select>
```
在调用该方法时,传入的参数中需要包含 `%` 通配符。
相关问题
mybatis中模糊查询
在MyBatis中,可以使用两种方式实现模糊查询。第一种方式是使用#{ },这是预编译处理的方式。在处理#{ }时,MyBatis会将其替换为?,然后使用PreparedStatement的set方法来赋值。这种方式可以防止SQL注入的问题。\[2\]第二种方式是使用${ },这是拼接SQL串的方式。使用${ }时,接收到的参数内容会直接拼接在SQL中,可能会引发SQL注入的问题。\[2\]在使用方式一时,需要在调用处手动添加%号通配符。而在使用方式二时,可以在映射配置文件中直接将%号写好。\[3\]这样可以避免在测试类中手动添加%号通配符的麻烦。总的来说,使用#{ }方式可以实现模糊查询并防止SQL注入,而使用${ }方式可以方便地在映射配置文件中写好%号通配符。\[2\]\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [Mybatis 模糊查询的4种实现方式 【mybatis】](https://blog.csdn.net/liudachu/article/details/106955071)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
mybatis循环模糊查询
你可以使用 MyBatis 的 foreach 标签来实现循环模糊查询。
示例代码:
```
<select id="selectByNames" resultMap="BaseResultMap">
SELECT * FROM user WHERE 1=1
<foreach collection="names" item="name" separator=" OR ">
AND name LIKE CONCAT('%', #{name}, '%')
</foreach>
</select>
```
其中,`names` 是一个 List 类型的参数,`item` 表示迭代变量名,`separator` 表示每个迭代项之间的分隔符。
在 SQL 语句中,使用 `CONCAT` 函数将 `%` 和迭代变量 `name` 拼接起来,实现模糊查询。同时,使用 `OR` 分隔符将每个迭代项连接起来,实现多条件查询。
阅读全文