MyBatis動態傳入表名,字段名參數的解決辦法


原文:http://blog.csdn.net/xichenguan/article/details/50393748

要實現動態傳入表名、列名,需要做如下修改

  • 添加屬性statementType="STATEMENT"
  • 同時sql里的屬有變量取值都改成${xxxx},而不是#{xxx}
[html]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
 
 
  1. <delete id="deleteTableData" parameterType="java.util.Map" statementType="STATEMENT">  
  2.     <![CDATA[ 
  3.         delete from ${table} where 
  4.         ${col} < ${date}]]>  
  5. </delete>  

1. statementType:STATEMENT(非預編譯),PREPARED(預編譯)或CALLABLE中的任意一個,這就告訴 MyBatis 分別使用Statement,PreparedStatement或者CallableStatement。默認:PREPARED。這里顯然不能使用預編譯,要改成非預編譯。

2. ${xxxx}:$將傳入的數據直接顯示生成在sql中,對於字符串數據,需要手動加上引號。

[java]  view plain copy 在CODE上查看代碼片 派生到我的代碼片
 
 
  1. String dateStr = DateFormatUtils.format(date.getTime(), "yyyy-MM-dd HH:mm:ss");  
  2. dateStr = "'" + dateStr + "'"; 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM