ibatis中井號跟美元符號區別( )

2021-06-27 07:53:13 字數 3635 閱讀 5043

原文出處 

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

<sqlid="update_by_example_where_clause">

<where>

<foreachcollection="example.oredcriteria"item="criteria"separator="or">

<iftest="criteria.valid">

<trimprefix="("prefixoverrides="and"suffix=")">

<foreachcollection="criteria.criteria"item="criterion">

<choose>

<whentest="criterion.novalue">

and $

<whentest="criterion.singlevalue">

and $ #

<whentest="criterion.betweenvalue">

and $ # and #

<whentest="criterion.listvalue">

and $

<foreachclose=")"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...