MyBatis Plus 特殊字符转义
时间: 2023-09-07 10:18:28 浏览: 250
在 MyBatis Plus 中,如果需要在 SQL 语句中使用特殊字符,可以使用转义符进行转义。下面是一些常见的特殊字符及其转义方式:
1. 单引号:使用两个单引号来表示一个单引号。例如,'Tom''s book' 表示 Tom's book。
2. 百分号:使用反斜杠来转义百分号。例如,'10\%' 表示 10%。
3. 下划线:同样使用反斜杠来转义下划线。例如,'Tom\_\_Jerry' 表示 Tom__Jerry。
需要注意的是,不同的数据库可能有不同的转义方式,具体可以参考对应数据库的文档。另外,在使用 MyBatis Plus 时,可以使用注解 @SqlParser(filter = true) 来过滤 SQL 解析,避免转义符被误解析。
相关问题
mybatis转义反斜杠_MyBatis Plus之like模糊查询中包含有特殊字符(_、\、%)
在 MyBatis Plus 的 like 模糊查询中,如果要包含特殊字符(如下划线、反斜杠、百分号),需要使用转义字符进行转义。
具体来说,需要将特殊字符前面加上反斜杠(\),以表示这是一个普通字符,而不是通配符。例如,如果要查询包含下划线的字符串,可以这样写:
```
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", "%\\_%");
List<User> userList = userMapper.selectList(wrapper);
```
其中,`\\` 表示转义字符,`_` 表示下划线。同理,如果要查询包含反斜杠的字符串,可以这样写:
```
wrapper.like("name", "%\\\\%");
```
其中,`\\\\` 表示转义后的反斜杠,`%` 表示任意字符。注意,由于 Java 中反斜杠是转义字符,因此需要写成 `\\\\` 才能表示一个反斜杠。
如果要查询包含百分号的字符串,也需要使用转义字符进行转义:
```
wrapper.like("name", "%\\%%");
```
其中,`%` 表示任意字符,需要使用转义字符进行转义。
需要注意的是,在使用转义字符进行查询时,需要注意转义字符的数量和位置,否则可能会导致查询结果不正确。
mybatis-plus拼装双引号
MyBatis-Plus是一个基于MyBatis的ORM框架增强工具,它提供了一种方便的方式来操作数据库,其中涉及到字符串拼接时,可能会遇到SQL注入的风险。当你需要在SQL语句中动态插入值,特别是字段名可能包含敏感字符(如单引号、双引号),MyBatis-Plus提供了预编译占位符 `${}` 来避免手动添加单引号。
例如,如果你有一个字段名为 `user_name`,并且想在查询时使用用户输入的部分值,你应该这样做:
```java
String sql = "SELECT * FROM table WHERE column = #{user_name}";
List<User> users = userMapper.selectList(new QueryWrapper<>().eq("column", "#{user_name}"));
```
在这个例子中,`${user_name}` 会由 MyBatis-Plus 自动处理,确保不会在 SQL 中直接插入单引号或其他特殊字符,而是将其转义为反引号 (`) 或其他安全的方式。
阅读全文