原文出處
1、#可以進行預編譯,進行型別匹配,#變數名# 會轉化為 jdbc 的 型別
$不進行資料型別匹配,$變數名$就直接把 $name$替換為 name的內容
例如:select * from tablename where id = #id# ,假設id的值為12,其中如果資料庫欄位id為字元型,那麼#id#表示的就是'12',如果id為整型,那麼#id#就是 12
會轉化為jdbc的 select * from tablename where id=?,把?引數設定為id的值
select * from tablename where id = $id$ ,如果欄位id為整型,sql語句就不會出錯,但是如果欄位id為字元型,
那麼sql語句應該寫成 select * from table where id = '$id$'
3、#方式能夠很大程度防止sql注入.
4、$方式無法方式sql注入.
5、$方式一般用於傳入資料庫物件.例如傳入表名.
6、所以ibatis用#比$好,一般能用#的就別用$.
另外,使用##可以指定引數對應資料庫的型別
如:select * from tablename where id = #id:number#
在做in,like 操作時候要特別注意
總結以下:
$號使用在具體pojo類也就是非基本型別的取值,而#號使用在具體有基本型別的取值?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<
sql
id
=
"update_by_example_where_clause"
>
<
where
>
<
foreach
collection
=
"example.oredcriteria"
item
=
"criteria"
separator
=
"or"
>
<
if
test
=
"criteria.valid"
>
<
trim
prefix
=
"("
prefixoverrides
=
"and"
suffix
=
")"
>
<
foreach
collection
=
"criteria.criteria"
item
=
"criterion"
>
<
choose
>
<
when
test
=
"criterion.novalue"
>
and $
<
when
test
=
"criterion.singlevalue"
>
and $ #
<
when
test
=
"criterion.betweenvalue"
>
and $ # and #
<
when
test
=
"criterion.listvalue"
>
and $
<
foreach
close
=
")"
collection
=
"criterion.value"
item
=
"listitem"
open
=
"("
separator
=
","
>
#
ibatis中井號跟美元符號區別( )
1 可以進行預編譯,進行型別匹配,變數名 會轉化為 jdbc 的 型別 不進行資料型別匹配,變數名 就直接把 name 替換為 name的內容 例如 select from tablename where id id 假設id的值為12,其中如果資料庫欄位id為字元型,那麼 id 表示的就是 12 ...
ibatis中井號跟美元符號區別( )
1 可以進行預編譯,進行型別匹配,變數名 會轉化為 jdbc 的 型別 不進行資料型別匹配,變數名 就直接把 name 替換為 name的內容 例如 select from tablename where id id 假設id的值為12,其中如果資料庫欄位id為字元型,那麼 id 表示的就是 12 ...
URL中的hash(井號)
1.的含義 代表網頁中的乙個位置,其右邊的字元,就是該位置的識別符號。比如 就是代表index.html中的print位置。瀏覽器會自動把print位置滾動到頁面可視區域內。設定方法 step1 設定乙個錨點定位到print位置 step2 在頁面需要定位的內容加上id print 例如 測試 st...