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

mybatis in查詢傳入String方式

 更新時(shí)間:2021年10月09日 14:28:47   作者:scorpio0zry  
這篇文章主要介紹了mybatis in查詢傳入String方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis in查詢傳入String

在使用 mybaits 進(jìn)行 in 查詢時(shí),傳入String,如1,2,3,發(fā)現(xiàn)查詢的結(jié)果并非我們想要的

這是因?yàn)?{}編譯完自動(dòng)加雙引號(hào)“” 也就是變成in (“1,2,3”)

如果想要獲得我們想要的結(jié)果,可以使用${},編譯完是這樣的 in (1,2,3)

例如,查詢鈴音庫(kù)中多首鈴音的總數(shù)量

<select id="getProgsResourceCount" resultType="java.lang.Long"
 parameterType="com.progandresource.entity.ProgsResourceCond">
 select count(ring_no)
     from progandresmanage_ringinfo where valid_day > now()
 <if test="ringNo != '' and ringNo != null">
     and ring_no in (${ringNo})
 </if>
</select>

如果傳入?yún)?shù)是List或者Array,則直接用foreach即可

例如

<select id="getProgsResourceCount" resultType="java.lang.Long" parameterType="java.util.List">
 select count(ring_no)
     from progandresmanage_ringinfo where valid_day > now() and ring_no in 
 <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
            #{item, jdbcType=VARCHAR}
        </foreach>
</select>

mybatis in查詢傳入字符串參數(shù)

sql里的in操作符允許我們?cè)趙here子句中規(guī)定多個(gè)值進(jìn)行匹配。

語(yǔ)法:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

在mybatis里,可以通過(guò)傳入數(shù)組或容器(array、list、set、map)通過(guò)foreach標(biāo)簽來(lái)給in操作符指定參數(shù)。

問(wèn)題:想要從org表中匹配字段org_id在OR001、OR002、OR004中的數(shù)據(jù),org_id是字符串類型的字段。

常規(guī)方法是在mapper.java中傳入一個(gè)包含"OR001"、“OR002”、"OR004"的list對(duì)象orgIdList,在xml中:

SELECT * from org where org_id in 
<foreach item="orgId" index="index" collection="orgIdList" open="(" close=")" separator=",">
#{orgId}
</foreach>

如果要作為in的匹配參數(shù)的多個(gè)值在一個(gè)String類型的對(duì)象orgs中,想直接通過(guò)String傳入,有兩種實(shí)現(xiàn)方式。

1、在xml中用${orgs}把整個(gè)String作為sql的一部分

SELECT * from org where org_id in (${orgs})

這種寫法需要關(guān)注字符串orgs的內(nèi)容在拼入之后,整個(gè)sql是否是符合語(yǔ)法的,按上面的需求和sql寫法,就要求作為sql一部分的orgs的值為"‘OR001',‘OR002',‘OR004'"。

參數(shù)直接以sql一部分的方式作為查詢語(yǔ)句存在sql注入的風(fēng)險(xiǎn),有一些項(xiàng)目可能會(huì)一刀切地限制開(kāi)發(fā)者不允許用這種寫法。

2、在xml的foreach標(biāo)簽里,傳入collection屬性時(shí)將字符串用split函數(shù)轉(zhuǎn)為數(shù)組

SELECT * from org where org_id in 
<foreach item="orgId" index="index" collection="orgs.split(',')" open="(" close=")" separator=",">
#{orgId}
</foreach>

在這里傳入的orgs字符串的值可以為"OR001,OR002,OR004",在調(diào)用split函數(shù)時(shí)設(shè)置","分格,可以直接切分出三個(gè)字符串作為數(shù)組的元素。

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

相關(guān)文章

  • SpringCloud?hystrix斷路器與全局解耦全面介紹

    SpringCloud?hystrix斷路器與全局解耦全面介紹

    什么是服務(wù)降級(jí)?當(dāng)服務(wù)器壓力劇增的情況下,根據(jù)實(shí)際業(yè)務(wù)情況及流量,對(duì)一些服務(wù)和頁(yè)面有策略的不處理或換種簡(jiǎn)單的方式處理,從而釋放服務(wù)器資源以保證核心交易正常運(yùn)作或高效運(yùn)作
    2022-10-10
  • 詳解Java中三種狀態(tài)機(jī)實(shí)現(xiàn)方式來(lái)優(yōu)雅消滅 if-else 嵌套

    詳解Java中三種狀態(tài)機(jī)實(shí)現(xiàn)方式來(lái)優(yōu)雅消滅 if-else 嵌套

    這篇文章主要為大家詳細(xì)介紹了Java中三種狀態(tài)機(jī)實(shí)現(xiàn)方式從而優(yōu)雅消滅 if-else 嵌套,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-08-08
  • java中List數(shù)組用逗號(hào)分隔開(kāi)轉(zhuǎn)成字符串2種方法

    java中List數(shù)組用逗號(hào)分隔開(kāi)轉(zhuǎn)成字符串2種方法

    在我們?nèi)粘i_(kāi)發(fā)中,在前后端交互的時(shí)候會(huì)遇到多個(gè)id或其他字段存放到一個(gè)字段中,這時(shí)我們會(huì)遇到一個(gè)List(集合)---->String(單個(gè)字段),這篇文章主要給大家介紹了關(guān)于java中List數(shù)組用逗號(hào)分隔開(kāi)轉(zhuǎn)成字符串的2種方法,需要的朋友可以參考下
    2023-10-10
  • Spring注解與P/C命名空間超詳細(xì)解析

    Spring注解與P/C命名空間超詳細(xì)解析

    Spring注解方式減少了配置文件內(nèi)容,更加便于管理,并且使用注解可以大大提高了開(kāi)發(fā)效率!注解本身是沒(méi)有功能的,和xml一樣,注解和xml都是一種元數(shù)據(jù),元數(shù)據(jù)即解釋數(shù)據(jù)的數(shù)據(jù),也就是所謂的配置
    2022-11-11
  • Java中I/O輸入輸出的深入講解

    Java中I/O輸入輸出的深入講解

    Java的I/O技術(shù)可以將數(shù)據(jù)保存到文本文件、二進(jìn)制文件甚至是ZIP壓縮文件中,以達(dá)到永久性保存數(shù)據(jù)的要求,下面這篇文章主要給大家介紹了關(guān)于Java中I/O輸入輸出的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 簡(jiǎn)單了解如何在spring中使用RabbitMQ

    簡(jiǎn)單了解如何在spring中使用RabbitMQ

    這篇文章主要介紹了簡(jiǎn)單了解如何在spring中使用RabbitMQ,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 如何對(duì)spring框架的搭建進(jìn)行封裝--springboot

    如何對(duì)spring框架的搭建進(jìn)行封裝--springboot

    這篇文章主要介紹了如何對(duì)spring框架的搭建進(jìn)行封裝--springboot,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 詳解Spring整合Ehcache管理緩存

    詳解Spring整合Ehcache管理緩存

    本文先通過(guò)Ehcache應(yīng)用的范例來(lái)介紹它的基本使用方法,然后再介紹與Spring整合的方法,
    2017-03-03
  • 在RedisTemplate中使用scan代替keys指令操作

    在RedisTemplate中使用scan代替keys指令操作

    這篇文章主要介紹了在RedisTemplate中使用scan代替keys指令操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • SpringBoot請(qǐng)求體缺失異常原因分析與處理方案

    SpringBoot請(qǐng)求體缺失異常原因分析與處理方案

    這篇文章主要介紹了SpringBoot請(qǐng)求體缺失異常原因分析與處理方案,該異常是因?yàn)閁serController的edit方法缺失了預(yù)期的UserUpdatePwdDTO請(qǐng)求體,產(chǎn)生原因主要由前端未發(fā)送請(qǐng)求體、Content-Type設(shè)置錯(cuò)誤或后端缺少@RequestBody注解導(dǎo)致,需要的朋友可以參考下
    2025-10-10

最新評(píng)論

浮山县| 秦皇岛市| 分宜县| 永靖县| 宜良县| 红河县| 崇阳县| 包头市| 延津县| 利津县| 西充县| 临夏市| 奉新县| 项城市| 通许县| 灵山县| 常山县| 琼中| 冀州市| 西藏| 固原市| 会宁县| 岳阳市| 确山县| 锦州市| 马关县| 西安市| 信宜市| 达日县| 广平县| 云和县| 波密县| 库尔勒市| 磐石市| 贺州市| 孟村| 绥棱县| 乐山市| 绿春县| 石棉县| 洛隆县|