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

mybatis中關(guān)于in的使用方法及說(shuō)明

 更新時(shí)間:2023年02月27日 09:46:44   作者:等櫻花的龍貓  
這篇文章主要介紹了mybatis中關(guān)于in的使用方法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis in的使用方法

很多人都想著拼接字符串用比如in(‘1’,‘2’)這樣的方式去獲取數(shù)據(jù),其實(shí)沒(méi)有這個(gè)必要,mybatis有foreach方法來(lái)自動(dòng)用這樣的數(shù)據(jù)

如下:

比如傳入的是roleIdList

//上面省略
xxxxx
WHERE ROLE_ID in
        <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
            #{item}
        </foreach>

mybatis使用in做范圍查詢的坑

錯(cuò)誤展示

List<WmRecommendpic> selectPicListByMap(@Param("recommendIds")String recommendIds);
<select id="selectPicListByMap" resultType="xx.xx.WmRecommendpic" ? ? parameterType="java.util.Map">
?? ??? ?
?? ??? ?SELECT * FROM `WmRecommendpic`?
?? ??? ?WHERE type_id IN (
?? ??? ??? ?SELECT DISTINCT type_id FROM `wm_relationship`?
?? ??? ??? ?WHERE recommend_id IN (#{recommendIds})
?? ??? ??? ?AND is_valid=TRUE)
?? ??? ?AND is_valid=TRUE
?? ??? ?ORDER BY id ASC
</select>

由于#是不能識(shí)別的 所以有兩種改法

改法1

<select id="selectPicListByMap" resultType="xx.xx.WmRecommendpic" ? ? parameterType="java.util.Map">
?? ??? ?
?? ??? ?SELECT * FROM `WmRecommendpic`?
?? ??? ?WHERE type_id IN (
?? ??? ??? ?SELECT DISTINCT type_id FROM `wm_relationship`?
?? ??? ??? ?WHERE recommend_id IN (${recommendIds})
?? ??? ??? ?AND is_valid=TRUE)
?? ??? ?AND is_valid=TRUE
?? ??? ?ORDER BY id ASC
</select>

為啥能這樣改?

當(dāng)參數(shù)采用:#{} : 解析為一個(gè) JDBC 預(yù)編譯語(yǔ)句(prepared statement)的參數(shù)標(biāo)記符,一個(gè) #{ } 被解析為一個(gè)參數(shù)占位符 。${}: 僅僅為一個(gè)純碎的 string 替換,在動(dòng)態(tài) SQL 解析階段將會(huì)進(jìn)行變量替換。

這種改法看似簡(jiǎn)單,但是會(huì)有安全隱患,容易遭黑客跨腳本攻擊。

所以推薦第二種改法。

改法2

List<WmRecommendpic> selectPicListByMap(Map<String,Object> map);
Map<String,Object> map = new HashMap<>();
map.put("recommendIds", recommendId.split(","));
		
return this.dao.selectPicListByMap(map);
<select id="selectPicListByMap" resultType="cn.smarthse.modules.platform.entity.apps.WmRecommendpic" parameterType="java.util.Map">
		
		SELECT * FROM `wm_recommendpic` 
		WHERE type_id IN (
			SELECT DISTINCT type_id FROM `wm_relationship` 
			WHERE recommend_id IN 
			<foreach item="recommendId" index="index" collection="recommendIds"   open="(" separator="," close=")">  
	              #{recommendId}   
	    	</foreach> 
			AND is_valid=TRUE)
		AND is_valid=TRUE
		ORDER BY id ASC
</select>

這里還是使用#{},這樣就不會(huì)遭受跨腳本的攻擊了。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中如何使用?byte?數(shù)組作為?Map?的?key

    Java中如何使用?byte?數(shù)組作為?Map?的?key

    本文將討論在使用HashMap時(shí),當(dāng)byte數(shù)組作為key時(shí)所遇到的問(wèn)題及其解決方案,介紹使用String和List這兩種數(shù)據(jù)結(jié)構(gòu)作為臨時(shí)解決方案的方法,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • @Column映射不一致的解決

    @Column映射不一致的解決

    這篇文章主要介紹了@Column映射不一致的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java 使用POI生成帶聯(lián)動(dòng)下拉框的excel表格實(shí)例代碼

    Java 使用POI生成帶聯(lián)動(dòng)下拉框的excel表格實(shí)例代碼

    本文通過(guò)實(shí)例代碼給大家分享Java 使用POI生成帶聯(lián)動(dòng)下拉框的excel表格,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09
  • Spring中多配置文件及引用其他bean的方式

    Spring中多配置文件及引用其他bean的方式

    本文給大家介紹spring中多配置文件及引用其他bean的方式,涉及到spring配置文件的相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03
  • 從面試中的問(wèn)題分析ThreadLocal

    從面試中的問(wèn)題分析ThreadLocal

    這篇文章主要介紹了從面試中的問(wèn)題分析ThreadLocal,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面我們來(lái)一起學(xué)習(xí)一下吧
    2019-06-06
  • Spring?Cloud?Hystrix?服務(wù)降級(jí)限流策略詳解

    Spring?Cloud?Hystrix?服務(wù)降級(jí)限流策略詳解

    這篇文章主要為大家介紹了Spring?Cloud?Hystrix?服務(wù)降級(jí)限流策略詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 淺談Apache Maven ToolChains的使用

    淺談Apache Maven ToolChains的使用

    Maven是java中非常有用和常用的構(gòu)建工具,基本上現(xiàn)在大型的java項(xiàng)目都是Maven和gradle的天下了。本文將介紹Apache Maven ToolChains的使用。
    2021-06-06
  • SpringBoot集成緩存功能詳解

    SpringBoot集成緩存功能詳解

    Java?Caching定義了五個(gè)核心接口,分別是:CachingProvider、CacheManager、Cache、Entry和Expiry,這篇文章主要介紹了SpringBoot集成緩存功能詳細(xì)過(guò)程,需要的朋友可以參考下
    2024-06-06
  • Mybatis實(shí)現(xiàn)分表插件

    Mybatis實(shí)現(xiàn)分表插件

    隨著系統(tǒng)的發(fā)展,數(shù)據(jù)量也會(huì)越來(lái)越大,分庫(kù)分表可以有效的緩解數(shù)據(jù)庫(kù)的壓力,本文主要介紹了Mybatis實(shí)現(xiàn)分表插件,感興趣的可以了解一下
    2021-05-05
  • Java中的notyfy()和notifyAll()的本質(zhì)區(qū)別

    Java中的notyfy()和notifyAll()的本質(zhì)區(qū)別

    很多朋友對(duì)java中的notyfy()和notifyAll()的本質(zhì)區(qū)別不了解,今天小編抽空給大家整理一篇教程關(guān)于Java中的notyfy()和notifyAll()的本質(zhì)區(qū)別,需要的朋友參考下吧
    2017-02-02

最新評(píng)論

达拉特旗| 明星| 乌拉特后旗| 苗栗县| 合作市| 尉氏县| 中西区| 中牟县| 清徐县| 丹凤县| 敖汉旗| 唐海县| 渝北区| 务川| 公安县| 克山县| 宾阳县| 麦盖提县| 循化| 辽宁省| 安义县| 洪泽县| 乐陵市| 太仓市| 瑞昌市| 南涧| 廊坊市| 普兰县| 长乐市| 溧水县| 易门县| 大理市| 犍为县| 木里| 广东省| 蓬莱市| 大安市| 绿春县| 马边| 宽城| 英德市|