mybatis 使用模糊查询
时间: 2024-03-16 16:38:13 浏览: 92
以下是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 的占位符 `#{}` 进行模糊查询
在 MyBatis 中,为了防止 SQL 注入攻击,推荐使用预编译的 SQL 和 `#{}` 占位符来构建模糊查询条件。这种方式不仅安全而且高效。
```xml
<select id="selectUsersByName" parameterType="string" resultType="User">
SELECT * FROM users WHERE username LIKE CONCAT('%', #{name}, '%')
</select>
```
此配置展示了如何利用 `CONCAT` 函数将通配符 `%` 添加到参数两端,从而实现对用户名的部分匹配[^2]。
#### 利用 `${}` 字符串拼接进行模糊查询
虽然不建议用于处理用户输入的数据以防 SQL 注入风险,但在某些特定场景下可以直接使用 `${}` 来完成简单的字符串替换操作:
```xml
<select id="findItemsByTitle" parameterType="String" resultType="Item">
SELECT * FROM items WHERE title like '${title}'
</select>
```
这里假设传入的 `title` 参数已经包含了必要的百分号 `%` 作为通配符[^3]。
#### Java 测试代码示例
对于上述任意一种方式,在应用程序层面可以通过单元测试验证功能是否正常工作。下面是一个基于 JUnit 的例子,它调用了 DAO 接口中的方法来进行带有模式字符的名字搜索[^4]:
```java
@Test
public void testLikeOne(){
try (SqlSession sqlSession = MyBatisUtil.getSqlSession()) {
StudentDao dao = sqlSession.getMapper(StudentDao.class);
String name = "%李%";
List<Student> students = dao.selectLikeOne(name);
students.forEach(student -> System.out.println(student));
}
}
```
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 ]
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)