当你在使用 mybatis 更新数据表时,如果传入的字符串包含特殊符号(如问号或感叹号),可能会导致 sql 语法错误。
原因分析
mybatis 会自动将 #{} 中的内容解析为 sql 参数,但特殊符号本身在 sql 中也是作为关键字使用的。例如,感叹号(!)表示否定,问号(?)表示占位符。
解决办法
找到问题了,原来 separator 本身就是一个关键词。因此,在使用特殊符号字符串时,需要对其进行转义。方法如下:
<update id="update"> UPDATE d_table SET `separator` = #{separator, jdbcType=VARCHAR} WHERE id = #{id, jdbcType=BIGINT} </update>
通过在特殊符号前添加反引号(`)),可以告诉 mybatis 将其作为一个普通字符,而不是 sql 关键字。这样,mybatis 就会正确地将特殊符号字符串传递给数据库。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END