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

mybatis 如何判斷l(xiāng)ist集合是否包含指定數(shù)據(jù)

 更新時(shí)間:2021年06月21日 11:04:14   作者:yyoc97  
這篇文章主要介紹了mybatis 判斷l(xiāng)ist集合是否包含指定數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

需求

1、在mybatis腳本中想要判斷l(xiāng)ist中是否含有某個(gè)字符串。

2、動(dòng)態(tài)使用list中的屬性,添加到數(shù)據(jù)庫crud字段。

網(wǎng)上也沒搜到類似的案例,配置choose功能,可以方便做寫動(dòng)態(tài)sql拼裝,所以記錄下。

準(zhǔn)備

之前腳本中用的最多的list函數(shù)就是size和遍歷了。那么mybatis腳本中是不是又包含函數(shù)了。首先我們要清楚list的類型。寫個(gè)簡單的測試用例。

<select id="test" parameterType="java.util.Map" resultType="java.util.Map">
        select
          <if test="list.containsKey('0')">
              'yes' as a,
          </if>
          1
    </select>

在list后接一個(gè)方法containsKey,運(yùn)行后會(huì)拋出一個(gè)異常:

Caused by: org.apache.ibatis.ognl.MethodFailedException: Method "containsKey" failed for object [0, 1] [java.lang.NoSuchMethodException: java.util.Arrays$ArrayList.containsKey(java.lang.Character)]

我們可以看到list的類型為:ArrayList,它沒有containsKey方法,但是我們知道List應(yīng)該有contains()方法,是的沒錯(cuò)。不過腳本在計(jì)算大小時(shí)size是不用加()的,加上還會(huì)拋異常。

細(xì)節(jié)

上面異常中還有一個(gè)細(xì)節(jié)就是containsKey(java.lang.Character),Character在java里面是字符類型的,也就是List中如果是存的[0,1]或則[“0”,“1”],那么多少匹配不到了,比較整數(shù)只能是contains(0),比較字符串只能是雙引號(hào),而不能是單引號(hào),因?yàn)閖ava做了強(qiáng)制類型比較,而mybatis中雙引號(hào)需要用轉(zhuǎn)義字符&quot;,所以比較字符串必須有這種方式:

 <if test="list.contains(&quot;0&quot;)">
              #{邏輯}
        </if>

從list動(dòng)態(tài)取數(shù)

-- 插入字段直接從list中獲取,通過${list[0].retainDay} 方式。

當(dāng)然也可以將list封裝到map里面,這樣代碼中就要多操作一步

<insert id="insert">
           insert ignore into ads_circle_user_retain
             (eventDate,${list[0].retainDay})
           VALUES
            <foreach collection="list" item="item" separator=",">
                (#{item.eventDate1},#{item.readNum})
            </foreach>
           on DUPLICATE KEY UPDATE ${list[0].retainDay} = values(${list[0].retainDay})
    </insert>

集合(list)判斷是否存在對(duì)應(yīng)的字符串或?qū)ο?/h2>

判斷集合中是否存在某個(gè)字符串對(duì)象,存在返回true,不存在返回false

list.contains("str1")

判斷集合中時(shí)候存在完全一樣的某個(gè)對(duì)象(所有屬性都一樣),存在返回true,不存在返回false

list.containsAll(Objcet obj)

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

相關(guān)文章

  • Java開發(fā)利器之Guava?Cache的使用教程

    Java開發(fā)利器之Guava?Cache的使用教程

    緩存技術(shù)被認(rèn)為是減輕服務(wù)器負(fù)載、降低網(wǎng)絡(luò)擁塞、增強(qiáng)Web可擴(kuò)展性的有效途徑之一。今天咱們就來聊聊Guava?Cache本地緩存,感興趣的可以了解一下
    2022-09-09
  • Java 基于UDP協(xié)議實(shí)現(xiàn)消息發(fā)送

    Java 基于UDP協(xié)議實(shí)現(xiàn)消息發(fā)送

    這篇文章主要介紹了Java 基于UDP協(xié)議實(shí)現(xiàn)消息發(fā)送,幫助大家更好的理解和學(xué)習(xí)Java網(wǎng)絡(luò)編程,感興趣的朋友可以了解下
    2020-11-11
  • 基于SpringMVC入門案例及講解

    基于SpringMVC入門案例及講解

    這篇文章主要介紹了基于SpringMVC入門案例及講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java中Lambda表達(dá)式的使用詳細(xì)教程

    Java中Lambda表達(dá)式的使用詳細(xì)教程

    這篇文章將通過示例為大家詳細(xì)展示Java中Lambda表達(dá)式的用法,同時(shí)也會(huì)介紹Lambda的相關(guān)知識(shí),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • Spring中ApplicationEventPublisher發(fā)布訂閱模式的實(shí)現(xiàn)

    Spring中ApplicationEventPublisher發(fā)布訂閱模式的實(shí)現(xiàn)

    本文主要介紹了Spring中ApplicationEventPublisher發(fā)布訂閱模式的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 解決SpringBoot多模塊發(fā)布時(shí)99%的問題

    解決SpringBoot多模塊發(fā)布時(shí)99%的問題

    本文歸納了以下 8 個(gè)原則和發(fā)布時(shí)經(jīng)常出現(xiàn)的 4 個(gè)問題的解決方案,掌握了這些原則和解決方案,幾乎可以解決絕大數(shù)SpringBoot發(fā)布問題
    2019-07-07
  • Spring內(nèi)部bean和級(jí)聯(lián)屬性用法詳解

    Spring內(nèi)部bean和級(jí)聯(lián)屬性用法詳解

    這篇文章主要介紹了Java內(nèi)部bean和級(jí)聯(lián)屬性用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • RocketMQ事務(wù)消息保證消息的可靠性和一致性

    RocketMQ事務(wù)消息保證消息的可靠性和一致性

    RocketMQ事務(wù)消息是一種能夠保證消息傳遞的可靠性和一致性的消息傳遞模式。它通過引入“半消息”和“事務(wù)狀態(tài)”機(jī)制,實(shí)現(xiàn)了消息發(fā)送和本地事務(wù)執(zhí)行的原子性,從而確保了消息的可靠性和一致性
    2023-04-04
  • Java StackTraceElement實(shí)例代碼

    Java StackTraceElement實(shí)例代碼

    這篇文章主要介紹了Java StackTraceElement實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • jdk線程池的實(shí)現(xiàn)

    jdk線程池的實(shí)現(xiàn)

    本文主要介紹了jdk線程池的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

固安县| 安乡县| 合作市| 苍溪县| 浪卡子县| 钦州市| 田东县| 随州市| 龙山县| 余姚市| 邵阳县| 日照市| 南康市| 农安县| 新化县| 永清县| 江永县| 阳高县| 九龙坡区| 扶余县| 河源市| 龙井市| 天镇县| 汨罗市| 从江县| 东丰县| 五莲县| 濮阳县| 红桥区| 巢湖市| 微山县| 毕节市| 清涧县| 定西市| 酒泉市| 迁西县| 红桥区| 崇左市| 岳西县| 郯城县| 金门县|