J2EE社區(qū)

          茍有恒,何必三更起五更眠;
          最無益,只怕一日曝十日寒.
          posts - 241, comments - 318, trackbacks - 0, articles - 16

          ibatis的$與#的區(qū)別

          Posted on 2011-05-17 12:26 xcp 閱讀(2018) 評論(0)  編輯  收藏 所屬分類: Database
          # 會根據(jù)不同類型而生產字符串,如 String 類型 : aa ---> 'aa'
          $ 表示原生類型,如 String 類型 : aa ---> aa

           

          每天遇到問題記錄

          1.#變量名#  會轉化為 jdbc 的 ?, 比如 select * from user where name=#name# 會轉化為jdbc的 select * from user where name=?,把?參數(shù)設置為name的值,而$變量名$就直接把 $name$替換為 name的內容, 也就是由可能 select * from user where name=$name$ 如果name為 "' ' or 1 = 1", 那么這樣就有可能導致sql注入,所以ibatis用#比$好,不會造成sql注入。

          2.ibatis中的參數(shù)傳入的值參數(shù)比較多,最好用bean方式傳入,也就是通過set/get取值的方式給sql map注入?yún)?shù),不要用hashmap結構傳入,每次用hashmap傳入會占用比較多的內容。如果參數(shù)少,用hashmap也比較方便簡單。但是對傳入?yún)?shù)的判斷,用bean方式比較容易檢測發(fā)現(xiàn),配置也能夠統(tǒng)一配置。




          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$                                          //$主要用處是動態(tài)表名 ,指定排序字端


          名稱: ?4C.ESL | .↗Evon
          口號: 遇到新問題?先要尋找一個方案乄而不是創(chuàng)造一個方案こ
          mail: 聯(lián)系我


          主站蜘蛛池模板: 保康县| 丹江口市| 洪湖市| 米林县| 马尔康县| 含山县| 山阴县| 咸丰县| 桂阳县| 林周县| 台中市| 涟源市| 公安县| 萍乡市| 漳平市| 青阳县| 紫云| 饶河县| 沽源县| 西安市| 全州县| 安图县| 阳曲县| 祥云县| 芦溪县| 南和县| 邹平县| 左权县| 来凤县| 乌兰县| 灌南县| 武宣县| 乌苏市| 永顺县| 万全县| 五莲县| 无棣县| 宣汉县| 汉源县| 北碚区| 玉溪市|