IBATIS中關於和 與 的應用

2021-08-29 19:16:17 字數 1223 閱讀 7935

ibatis中關於iterate和『$』與『#』的應用

乙個包含list元素的hashmap引數賦給sqlmap

public int getcountbyid(string id, string title, list ids) throws exception

上面的ids元素是乙個list,裡面包含了乙個id列表。id和title都是string。

select *

from mytable

id=#id#

title like '%$title$%'

ids in

#ids#

order by time desc

在上面的sqlmap中要注意的地方有兩個。第乙個地方是,標籤中一定要記得寫property="ids",不要因為在上面的

標籤中判斷了該屬性,就在這個標籤中忽略了property的書寫(如果你忘了

寫iterate中的property屬性的話系統會報這樣的錯誤cause: com.ibatis.sqlmap.client.sqlmapexception: parameterobject or

property was not a collection, array or iterator.),並且要記住,

#ids# 中的『』符號,只有這樣ibatis才把ids作為乙個可迭代的物件(list,陣列...),不然的話ibatis會把ids作為普通的string來處理。

第二個地方就是,上面的關於『$『與『#』的應用。

下面就來說說關於『$『與『#』的應用。在通常情況下ibatis的引數在sqlmap中使用#param#的形式,引數名以』#『包著,但當使用

sql的like語句時就發生了問題,在單引號中無法使用#param#這種形式。解決辦法有:

1.當應用select * from table1 where col like 』value%』時,如果要把『value』以引數代替,可以把整個like後面的字串

全改為引數。即:select * from table1 where col like #param# ,此時引數param的值為字串"value%"

2.使用『$』將引數名包起來。例如:name like 『%#name#%』。我們的解決方法有2。(a)把name like 『%#name#%』的

#換成$,即:name like 『%$name$%』。(b)用||連線字串的方式,寫成,name like 『%』|| #name#『%』。

ibatis中應用技巧

ibatis中經常遇到乙個公用的sql被多處呼叫的情況。比如許可權驗證這塊,我需要知道每次使用者取出的資源驗證對其是否有許可權,則需要對取出的資源列表做乙個過濾。資源表結構大致如下 sys res row id 資源id sys sys res row id 上級資源id system row id...

ibatis 中 與 的區別

在ibatis中我們使用sqlmap進行sql查詢時需要引用引數,在引數引用中遇到的符號 和 之間的區分為,可以進行與編譯,進行型別匹配,而 不進行資料型別匹配,例如 select from table where id id 其中如果欄位id為字元型,那麼 id 表示的就是 id 型別,如果id為...

IBATIS中 與 的區別

我們在使用ibatis時會經常用到 和 這兩個符號。一 與 區別說通俗一點就是 中間的變數就是直接替換成值的 會根據變數的型別來進行替換 比如articletitle的型別是string,值是 標題 的時候 articletitle 標題 articletitle 標題 二.的作用實際上是字串拼接,...