最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談mybatis中的#和$的區(qū)別 以及防止sql注入的方法

 更新時間:2016年10月21日 09:50:17   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談mybatis中的#和$的區(qū)別 以及防止sql注入的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

mybatis中的#和$的區(qū)別

1. #將傳入的數(shù)據(jù)都當(dāng)成一個字符串,會對自動傳入的數(shù)據(jù)加一個雙引號。如:order by #user_id#,如果傳入的值是111,那么解析成sql時的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id".
  
2. $將傳入的數(shù)據(jù)直接顯示生成在sql中。如:order by $user_id$,如果傳入的值是111,那么解析成sql時的值為order by user_id,  如果傳入的值是id,則解析成的sql為order by id.
  
3. #方式能夠很大程度防止sql注入。
  
4.$方式無法防止Sql注入。


5.$方式一般用于傳入數(shù)據(jù)庫對象,例如傳入表名.
  
6.一般能用#的就別用$.

防止Sql注入

注意:SQL語句不要寫成select * from t_stu where s_name like '%$name$%',這樣極易受到注入攻擊。

”${xxx}”這樣格式的參數(shù)會直接參與sql編譯,從而不能避免注入攻擊。但涉及到動態(tài)表名和列名時,只能使用“${xxx}”這樣的參數(shù)格式。

在編寫mybatis的映射語句時,盡量采用“#{xxx}”這樣的格式。若不得不使用“${xxx}”這樣的參數(shù),要手工地做好過濾工作,來防止sql注入攻擊。

例子

<sql id="condition_where">  
  <isNotEmpty property="companyName" prepend=" and ">  
    t1.company_name like #companyName#  
  </isNotEmpty>  
</sql> 

java代碼和你原來的差不多,其實也沒什么不好,你要覺得麻煩 把判斷null和'%'封裝到一個方法里就可以了

if (!StringUtil.isEmpty(this.companyName)) {  
  table.setCompanyName("%" + this.companyName + "%");  
} 

以上就是小編為大家?guī)淼臏\談mybatis中的#和$的區(qū)別 以及防止sql注入的方法全部內(nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

  • 深入解析面向?qū)ο缶幊淘贘ava中的應(yīng)用小結(jié)

    深入解析面向?qū)ο缶幊淘贘ava中的應(yīng)用小結(jié)

    本文詳細(xì)介紹了面向?qū)ο缶幊痰幕靖拍?包括類和對象、封裝、繼承和多態(tài),通過具體的Java代碼示例,展示了如何在Java中應(yīng)用這些面向?qū)ο缶幊痰暮诵乃枷?感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Java雙向鏈表的操作

    Java雙向鏈表的操作

    這篇文章主要介紹了Java雙向鏈表的操作,雙向鏈表,對于該鏈表中的任意節(jié)點,既可以通過該節(jié)點向前遍歷,也可以通過該節(jié)點向后遍歷,雙向鏈表在實際工程中應(yīng)用非常廣泛,是使用鏈表這個結(jié)構(gòu)的首選
    2022-06-06
  • MyBatis使用注解開發(fā)實現(xiàn)過程詳解

    MyBatis使用注解開發(fā)實現(xiàn)過程詳解

    這篇文章主要介紹了MyBatis使用注解開發(fā)實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • 詳解HTTP請求與響應(yīng)基礎(chǔ)及實例

    詳解HTTP請求與響應(yīng)基礎(chǔ)及實例

    這篇文章主要介紹了詳解HTTP請求與響應(yīng)基礎(chǔ)及實例的相關(guān)資料,這里對http的請求和響應(yīng)進(jìn)行詳細(xì)分析并附有實現(xiàn)實例,需要的朋友可以參考下
    2017-07-07
  • SpringBoot參數(shù)校驗之@Valid與@Validated的用法與場景

    SpringBoot參數(shù)校驗之@Valid與@Validated的用法與場景

    這篇文章主要介紹了SpringBoot參數(shù)校驗的用法與場景,在實際開發(fā)中,參數(shù)校驗是保證接口安全性和數(shù)據(jù)完整性的重要手段,Spring Boot提供了@Valid和@Validated兩個核心注解來實現(xiàn)參數(shù)校驗,但許多開發(fā)者對它們的區(qū)別和使用場景存在疑惑,需要的朋友可以參考下
    2025-02-02
  • SpringBoot 策略模式實現(xiàn)切換上傳文件模式

    SpringBoot 策略模式實現(xiàn)切換上傳文件模式

    策略模式是指有一定行動內(nèi)容的相對穩(wěn)定的策略名稱,這篇文章主要介紹了SpringBoot 策略模式 切換上傳文件模式,需要的朋友可以參考下
    2023-11-11
  • SpringBoot項目部署時application.yml文件的加載優(yōu)先級和啟動腳本問題

    SpringBoot項目部署時application.yml文件的加載優(yōu)先級和啟動腳本問題

    Spring Boot在啟動時會根據(jù)一定的優(yōu)先級順序加載配置文件,優(yōu)先級從高到低依次是:命令行參數(shù)、Jar包外部config目錄下的配置文件、Jar包同級目錄下的配置文件、classpath下的/config目錄、classpath根路徑
    2024-09-09
  • Java使用entrySet方法獲取Map集合中的元素

    Java使用entrySet方法獲取Map集合中的元素

    這篇文章主要為大家詳細(xì)介紹了Java使用entrySet方法獲取Map集合中的元素,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • java線程并發(fā)控制同步工具CountDownLatch

    java線程并發(fā)控制同步工具CountDownLatch

    這篇文章主要為大家介紹了java線程并發(fā)控制同步工具CountDownLatch使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • springboot掃碼登錄的簡單實現(xiàn)

    springboot掃碼登錄的簡單實現(xiàn)

    本文主要介紹基于SpringBoot + Vue + Android實現(xiàn)的掃碼登錄,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評論

咸丰县| 昔阳县| 乌拉特前旗| 三门县| 洪雅县| 克拉玛依市| 长泰县| 武冈市| 荔波县| 昌乐县| 凉城县| 东乡族自治县| 清新县| 西畴县| 江安县| 商河县| 芜湖县| 凤山市| 专栏| 江北区| 和政县| 京山县| 宁城县| 乃东县| 湖口县| 绥德县| 凌海市| 龙陵县| 乌拉特中旗| 龙胜| 崇信县| 平凉市| 大安市| 阳朔县| 梨树县| 三明市| 都兰县| 安国市| 吕梁市| 许昌县| 江门市|