mapper xml sql 后面直接跟#{Strsql}
时间: 2023-10-15 19:06:53 浏览: 116
在MyBatis中,我们可以使用`#{}`语法来表示参数,它会被MyBatis自动转义和绑定到PreparedStatement中。例如,如果我们在mapper xml文件中需要使用一个字符串参数来构建SQL语句,我们可以这样写:
```xml
<select id="getUserById" parameterType="int" resultType="User">
SELECT * FROM user WHERE id = #{userId}
</select>
```
在这个例子中,`#{userId}`表示一个参数,它的值将会被自动绑定到PreparedStatement中的占位符。当我们执行这个SQL语句时,MyBatis会自动将`userId`的值转义并填充到占位符中,以防止SQL注入等安全问题。
你提到的`#{Strsql}`也是类似的用法,只不过它代表的是一个字符串类型的参数。我们可以像下面这样在mapper xml中使用它:
```xml
<select id="getUserBySql" resultType="User">
${Strsql}
</select>
```
这里用的是`${}`语法,它不会将参数进行转义,而是直接将它拼接到SQL语句中。这种写法通常不太安全,容易受到SQL注入等攻击,不建议使用。
阅读全文