Posted on 2011-05-17 12:26
xcp 閱讀(2016)
評論(0) 編輯 收藏 所屬分類:
Database
# 會根據不同類型而生產字符串,如 String 類型 : aa ---> 'aa'
$ 表示原生類型,如 String 類型 : aa ---> aa
每天遇到問題記錄
1.#變量名# 會轉化為 jdbc 的 ?, 比如 select * from user where name=#name# 會轉化為jdbc的 select * from user where name=?,把?參數設置為name的值,而$變量名$就直接把 $name$替換為 name的內容, 也就是由可能 select * from user where name=$name$ 如果name為 "' ' or 1 = 1", 那么這樣就有可能導致sql注入,所以ibatis用#比$好,不會造成sql注入。
2.ibatis中的參數傳入的值參數比較多,最好用bean方式傳入,也就是通過set/get取值的方式給sql map注入參數,不要用hashmap結構傳入,每次用hashmap傳入會占用比較多的內容。如果參數少,用hashmap也比較方便簡單。但是對傳入參數的判斷,用bean方式比較容易檢測發現,配置也能夠統一配置。
select * from user u where u.username=#name# //自動加''號
select * from user u where age=$age$ and username=$username$ // username=$username$ 會出錯
select * from $username$ u where age =$age$ order by $filed$ //$主要用處是動態表名 ,指定排序字端
名稱: ?4C.ESL | .↗Evon
口號: 遇到新問題?先要尋找一個方案乄而不是創造一個方案こ
mail: 聯系我