mybatis 模糊查询转译
时间: 2025-01-14 16:57:17 浏览: 32
### MyBatis 实现模糊查询的方法
#### 使用 `#{}占位符` 和 `%` 符号组合实现预编译 SQL 查询
在 MyBatis 中,为了防止 SQL 注入攻击并提高安全性,推荐使用带有 `#{}` 占位符的预编译 SQL 来构建模糊查询条件。这种方式可以确保参数被正确转义处理。
```xml
<select id="findUsersByName" parameterType="string" resultType="User">
SELECT * FROM users WHERE username LIKE CONCAT('%', #{name}, '%')
</select>
```
此代码片段展示了如何利用 `CONCAT()` 函数将通配符百分比符号 (`%`) 添加到输入的名字两端,从而形成完整的模糊匹配模式[^2]。
#### 利用 `${}` 字符串拼接方式(不建议)
虽然可以通过 `${}` 将变量直接嵌入到 SQL 语句中完成模糊查询操作,但这容易引发安全风险——特别是当应用程序未能妥善过滤用户提交的数据时可能会遭受 SQL 注入威胁。因此,在实际开发过程中应谨慎考虑这种方法的应用场景[^3]。
#### Java 测试类中的调用实例
下面是一个简单的单元测试案例,它演示了怎样通过传递含有特定字符序列作为前缀或后缀的方式来进行模糊查找:
```java
@Test
public void testLikeOne(){
try (SqlSession sqlSession = MyBatisUtil.getSqlSession()) {
StudentDao dao = sqlSession.getMapper(StudentDao.class);
String namePattern = "%李%";
List<Student> students = dao.selectLikeOne(namePattern);
students.forEach(student -> System.out.println(student));
}
}
```
这段程序先获取了一个数据库会话对象,接着定义好用于筛选的目标姓名模板,并最终打印出符合条件的学生记录列表[^4]。
阅读全文
相关推荐












