簡而言之,把#{tablename}換成${tablename}就能解決問題。
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/tornado430/article/details/83001874
參考於:http://blog.51cto.com/11230344/2287968
<select id= "queryTable" resultMap="map>
select * from #{tableName}
</select>
### SQL: select * from ?
### Cause: java.sql.SQLException: ORA-00903: 表名無效
發現有問題,實際上#{}方式通過?形式進行傳遞參數的,?它不支持tableName
將#{}換成${}
<select id= "queryTable" resultMap="map">
select * from ${tableName}
</select>
總結:
#{} :表示sql中的參數部分,實際上底層使用的是PreparedStatement
${}:表示字符串拼接,實際上底層采用的Statement對象
能使用#{}的地方都可以使用${}代替,但是能使用${}的地方不一定能夠用#{}來替代
————————————————
版權聲明:本文為CSDN博主「tornado430」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/tornado430/article/details/83001874