1. 程式人生 > >mybatis#{}與${}區別總結

mybatis#{}與${}區別總結

一、總結:

     #{ }:佔位符,防止sql注入

     ${ }:sql拼接符號

二、分析:

    動態sql是mybatis的強大的特性之一。mybatis在對sql語句進行預編譯之前會對sql進行動態解析,解析為一個BoundSql物件,也是在此處對動態SQL進行處理。

    在動態SQL解析中,#{ }和${ }不同:

    #{ }解析為JDBC預編譯語句(PreparedStatement)的引數標記符

    例如:

  1. select * from user where name = #{name}  

三、使用

      1、能使用#{ } 不使用${ }

      2、$方式一般用於傳入資料庫物件,例如傳入表名

      3、排序時使用order by 動態引數時需要注意,用$而不是#