Mybatis 中 與 的區別

2021-09-27 06:12:23 字數 1118 閱讀 6251

1 #是將傳入的值當做字串的形式,eg:select id,name,age from student where id =#,當前端把id值1,傳入到後台的時候,就相當於 select id,name,age from student where id =『1』.

2 $ 是將傳入的資料直接顯示生成sql語句,eg:select id,name,age from student where id =$,當前端把id值1,傳入到後台的時候,就相當於 select id,name,age from student where id = 1.

3 使用#可以很大程度上防止sql注入。(語句的拼接 #,使用的是preparedstatement,會有型別轉換,比較安全 簡單的說就是#{}是經過預編譯的,是安全的,${}是未經過預編譯的,僅僅是取變數的值,是非安全的,存在sql注入。)

4 但是如果使用在order by 中就需要使用 $.

5 在大多數情況下還是經常使用#,但在不同情況下必須使用$.

我覺得#與katex parse error: expected 'eof', got '#' at position 9: 的區別最大在於:#̲{} 傳入值時,sql解析時,…{}傳入值,sql解析時,引數是不帶引號的。

一 : 理解mybatis中 $與#

在mybatis中的$與#都是在sql中動態的傳入引數。

eg:select id,name,age from student where name=# 這個name是動態的,可變的。當你傳入什麼樣的值,就會根據你傳入的值執行sql語句。

二:使用$與#

#{}: 解析為乙個 jdbc 預編譯語句(prepared statement)的引數標記符,乙個 # 被解析為乙個引數佔位符 。

${}: 僅僅為乙個純碎的 string 替換,在動態 sql 解析階段將會進行變數替換。

name–>cy

eg: select id,name,age from student where name=# – name=『cy』

select id,name,age from student where name=$ – name=cy

**:

mybatis 中 與 的區別

mybatis ibatis中 和 的區別 1.將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值是id,則解析成的sql為order by id 2.將傳入的資料直接...

mybatis 中 與 的區別

mybatis將 解釋為jdbc prepared statement 的乙個 引數標記 而將 解釋為 字串替換 1.將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值...

mybatis 中 與 的區別

mybatis ibatis中 和 的區別 1.將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值是id,則解析成的sql為order by id 2.將傳入的資料直接...