mybatis模糊查询防止%
时间: 2023-12-06 12:38:13 浏览: 92
mybatis分页及模糊查询功能实现
为了防止用户输入的通配符影响到模糊查询的结果,可以在传入参数时对其进行处理。在MyBatis中,可以使用`<![CDATA[ ]]>`标签来包含SQL语句,从而避免特殊字符的影响。具体实现如下:
```xml
<!-- 在Mapper.xml文件中定义SQL语句 -->
<select id="selectByKeyword" parameterType="String" resultType="Material">
SELECT * FROM materials WHERE materials_name LIKE CONCAT('%', <![CDATA[#{keyword}]]>, '%')
</select>
```
在Java代码中,需要对传入的参数进行处理,将其中的特殊字符进行转义,例如:
```java
// 对传入的参数进行处理,将其中的特殊字符进行转义
String keyword = "%" + specialSubjectName.replaceAll("([%_])", "\\\\$1") + "%";
List<Material> materials = materialMapper.selectByKeyword(keyword);
```
其中,`replaceAll("([%_])", "\\\\$1")`表示将字符串中的`%`和`_`进行转义,转义后的结果为`\%`和`\_`。
阅读全文