mybatis 使用模糊查询
时间: 2024-03-16 10:38:13 浏览: 77
以下是MyBatis使用模糊查询的两种方式:
1. 使用通配符进行模糊查询
```xml
<select id="selectByKeyword" parameterType="String" resultType="YourResultType">
SELECT * FROM your_table WHERE your_column LIKE CONCAT('%', #{keyword}, '%')
</select>
```
在上述示例中,我们使用了`LIKE`关键字和`CONCAT`函数来构建模糊查询语句。`%`是通配符,表示匹配任意字符。
2. 使用正则表达式进行模糊查询
```xml
<select id="selectByRegex" parameterType="String" resultType="YourResultType">
SELECT * FROM your_table WHERE your_column REGEXP #{regex}
</select>
```
在上述示例中,我们使用了`REGEXP`关键字来进行正则表达式匹配。你可以在`#{regex}`中传入你想要的正则表达式。
请注意,以上示例中的`your_table`和`your_column`需要替换为你实际的表名和列名。
相关问题
mybatis的模糊查询
MyBatis的模糊查询可以使用通配符来实现,通配符有两种:百分号(%)和下划线(_)。
%代表匹配任意长度的任意字符,_代表匹配单个任意字符。
例如,如下SQL语句:
```
SELECT * FROM user WHERE username LIKE '%张%'
```
表示查询用户名中包含“张”的所有用户。
在MyBatis中,可以使用#{parameter}占位符来传递参数,例如:
```
<select id="selectUsersByName" resultType="User">
SELECT * FROM user WHERE username LIKE '%#{name}%'
</select>
```
在Java代码中,调用该查询方法时需要传递一个名为name的参数,例如:
```
List<User> users = sqlSession.selectList("selectUsersByName", "张");
```
这样就会查询出用户名中包含“张”的所有用户。注意,这里不需要在参数中添加通配符,MyBatis会自动添加。
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` 分隔符将每个迭代项连接起来,实现多条件查询。
阅读全文