ibatis 中 $與#的區別


我們在使用iBATIS時會經常用到#和$這兩個符號。

 

一 .#與$區別說通俗一點就是

         $中間的變量就是直接替換成值的

         #會根據變量的類型來進行替換

         比如articleTitle的類型是string, 值是"標題"的時候

              $articleTitle$ = 標題

              #articleTitle# = '標題'

 

二. $ 的作用實際上是字符串拼接,

         select * from  $tableName$

         等效於

         StringBuffer sb = new StringBuffer(256);

         sb.append("select * from").append(tableName);

         sb.toString();
 

        #用於變量替換

        select * from table where id = #id#

        等效於

        prepareStement =stmt.createPrepareStement("select * from table where id = ?")

        prepareStement.setString(1,'abc'); 

 

 

三.那什么時候用$,什么時候 用 #

       (1)對於變量部分, 應當使用#, 這樣可以有效的防止sql注入,具體執行時,# 都是用到了prepareStement,這樣對效率也有一定的提升

            #方式一般用於傳入插入/更新的值或查詢/刪除的where條件

       (2) $只是簡單的字符拼接而已,對於非變量部分, 那只能使用$, 實際上, 在很多場合,$也是有很多實際意義的

             $方式一般用於傳入數據庫對象.例如傳入表名.

             例如:

             select  *  from  $tableName$  對於不同的表執行統一的查詢

             update  $tableName$  set  name = #name#  每個實體一張表,改變不用實體的狀態

             特別說明, $只是字符串拼接,所以要特別小心sql注入問題。

      (3)能同時用#和$的時候最好用#

 


免責聲明!

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



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