欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Mybatis中foreach嵌套使用if標簽對象取值的問題

 更新時間:2022年02月08日 08:59:11   作者:_修鐵路的  
這篇文章主要介紹了解決Mybatis中foreach嵌套使用if標簽對象取值的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

foreach嵌套使用if標簽對象取值問題

最近做項目過程中,涉及到需要在 Mybatis 中 使用 foreach 進行循環(huán)讀取傳入的查詢條件,動態(tài)拼接SQL語句,接口傳入的查詢條件格式:{"advanceSearchList":[{"searchType":10,"searchText":"12"}]} ,根據(jù)我定義的參數(shù)格式,需要在 Mybatis中動態(tài)去循環(huán)讀取 advanceSearchList 集合中的json對象,并根據(jù) json對象中的  searchType 做不同的處理,需要在 foreach 中嵌套 if 標簽進行判斷使用。

大體格式

? ? ? ? <foreach collection="advanceSearchList" item="item" index="index" >
? ? ? ? ? ? <if test="xxx == 10 ">
? ? ? ? ? ? ? ? and abc like CONCAT('%', ddd, '%')
? ? ? ? ? ? </if>
? ? ? ? </foreach>

因為當前 foreach 中獲取到的 item 是一個json對象,涉及到在 if 標簽中獲取當前對象中指定屬性的值,一時腦抽,沒有想起來取值辦法,咨詢?nèi)f能的度娘沒有得到滿意的回復(fù),經(jīng)過自己傻瓜式的嘗試,終于找到了取值方法,特此記錄下:

解決辦法

Mybatis 在 foreach 標簽中使用 if 標簽獲取對象屬性方法:

直接通過 對象.屬性 的方式獲?。。。?!對,你沒看錯,就是直接通過  對象.屬性 的方式獲取?。?!

例如:當前foreach 循環(huán)獲取的對象是 item,想要獲取對象中的 searchType ,直接就是 item.searchType 即可……

代碼如下

? ? ? ? <foreach collection="advanceSearchList" item="item" index="index" >
? ? ? ? ? ? <if test="item.searchType == 10 ">
? ? ? ? ? ? ? ? and abc like CONCAT('%', #{item.searchText}, '%')
? ? ? ? ? ? </if>
? ? ? ? </foreach>

Mybatis if 語句嵌套

在使用mybatis的時候,可以在 if 標簽下面加上if標簽。

比如要對這個sql語句進行改進。

select a.* from emp a?
inner join dept b
on a.deptno = b.no
where ?b.place= #{place}

要求

如果 傳入的 地點 是 North Korea 那么 符合 a中的條件也可以。

a.male = 'M' or a.age ?bewteen ?20 and 30?

where語句可以這么寫

select * from emp e?
<where>
  <if test="_parameter.place != null and _parameter.place != '' ">
    and?
    <if test="_parameter.place == 'North Korea' "> ?( ?</if>
    b.place = #{place}
    <if test="_parameter.place == 'North Korea' ">
    or a.male = 'M' or a.ge between 20 and 30 ?)
    </if>
  </if>
</where>

注意里面的括號。

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

相關(guān)文章

  • SpringBoot整合Redis管道的示例代碼

    SpringBoot整合Redis管道的示例代碼

    本文將結(jié)合實例代碼,介紹SpringBoot整合Redis管道,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-07-07
  • Redis工具類封裝RedisUtils的使用示例

    Redis工具類封裝RedisUtils的使用示例

    本文主要介紹了Redis工具類封裝RedisUtils的使用示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • JAVA日期處理類詳解

    JAVA日期處理類詳解

    這篇文章主要介紹了Java實現(xiàn)的日期處理類,結(jié)合完整實例形式分析了Java針對日期的獲取、運算、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2021-08-08
  • Java的包裝類特性總結(jié)

    Java的包裝類特性總結(jié)

    這篇文章主要介紹Java的包裝類的一些特性,包裝類的作用,哪些類屬于包裝類等,文中有詳細的代碼示例,對我們的學(xué)習或工作有一定的幫助,需要的朋友可以參考下
    2023-05-05
  • java 漢諾塔Hanoi遞歸、非遞歸(仿系統(tǒng)遞歸)和非遞歸規(guī)律 實現(xiàn)代碼

    java 漢諾塔Hanoi遞歸、非遞歸(仿系統(tǒng)遞歸)和非遞歸規(guī)律 實現(xiàn)代碼

    漢諾塔(Hanoi) 算法Java實現(xiàn)。通過三個函數(shù),分別對Hanoi進行遞歸、非遞歸和非遞歸規(guī)律實現(xiàn)。
    2013-05-05
  • 詳解Java模擬棧的實現(xiàn)以及Stack類的介紹

    詳解Java模擬棧的實現(xiàn)以及Stack類的介紹

    棧是一種數(shù)據(jù)結(jié)構(gòu),它按照后進先出的原則來存儲和訪問數(shù)據(jù)。Stack是一個類,表示棧數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)。本文就來和大家介紹一下Java模擬棧的實現(xiàn)以及Stack類的使用,需要的可以參考一下
    2023-04-04
  • 詳解Java中Collections.sort排序

    詳解Java中Collections.sort排序

    Comparator是個接口,可重寫compare()及equals()這兩個方法,接下來通過本文給大家介紹Java中Collections.sort排序,需要的的朋友參考下吧
    2017-04-04
  • java String類常用方法練習小結(jié)

    java String類常用方法練習小結(jié)

    本文主要介紹了java String類常用方法的例子,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 使用Eclipse創(chuàng)建Maven的Java WEB項目的兩種方式

    使用Eclipse創(chuàng)建Maven的Java WEB項目的兩種方式

    本文詳細介紹了如何在JDK 1.8、Maven 3.6.3和Eclipse 2017版本下創(chuàng)建Java Web項目,包括選擇archetype方式、配置Tomcat、設(shè)置為Web3.1、配置Maven編譯級別、修復(fù)Eclipse提示的錯誤、設(shè)置Maven源文件夾等步驟,需要的朋友可以參考下
    2024-11-11
  • Java字符串排序的幾種實現(xiàn)方式

    Java字符串排序的幾種實現(xiàn)方式

    這篇文章主要給大家介紹了關(guān)于Java字符串排序的幾種實現(xiàn)方式, 使用Java平臺進行字符串排序被認為是一件簡單的工作,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07

最新評論