mybatis执行java拼接的sql把'' 都转义成了\'\'如何解决
时间: 2023-12-06 12:03:22 浏览: 108
MyBatis 动态拼接Sql字符串的问题
Mybatis在执行SQL语句时,会自动对参数进行转义,以防止SQL注入攻击。在转义中,单引号会被转义成两个单引号,即`''`。如果你在Java代码中拼接了SQL语句,并且在拼接过程中使用了单引号,那么在传递给Mybatis执行时,这些单引号会被转义成两个单引号。
如果你希望传递给Mybatis的SQL语句中的单引号不被转义成两个单引号,可以使用Mybatis提供的`<![CDATA[ ]]>`标签来包裹SQL语句,这样Mybatis就不会对其中的特殊字符进行转义了。例如:
```xml
<select id="selectUserByName" resultType="User">
<![CDATA[
SELECT * FROM user WHERE name = #{name}
]]>
</select>
```
在上面的例子中,SQL语句被包裹在`<![CDATA[ ]]>`标签中,Mybatis就不会对其中的单引号进行转义了。你可以将你拼接的SQL语句放在这个标签中,这样就不会出现单引号被转义的问题了。
阅读全文