ibatis/mysql一个要点记录:表名不能使用参数

笑笑凯旋

原先有一个查询:


SELECT *

FROM #tableName#

WHERE 1=1

limit #start#,#count#;

运行发现报错了,但是错误信息并没有指出具体的原因。但是debug日志中执行的sql是没有问题的。那么唯一的问题就是表名了。将 #tableName# 换成 $tableName$ 后,问题解决。由于ibatis是使用PreparedStatement进行参数化查询的,由此可知PreparedStatement是不支持以表名作为参数的。那么对表名是变量的情况,就要使用字符串拼接的形式。这有可能导致SQL注入,需要加以防范。

主 楼 发布于:2019-10-12 18:07:59回复
黑云的家

男人的谎言可以骗女人一夜,女人的谎言可以骗男人一生!

2 楼 发布于:2020-03-22 00:21:04
回复
侑點尐個性

好朋友像内裤就算你有大起大落他也包含着你,更好的朋友像避孕套永远为你的安全着想,最好的朋友像伟哥总是给予你支持!

3 楼 发布于:2022-03-04 19:21:41
回复
曲奇Cookie

楼主快去捡肥皂吧

4 楼 发布于:2023-06-10 20:04:21
回复

发表回复: