亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mybatis嵌套循環(huán)map方式(高級用法)

 更新時間:2022年01月29日 10:01:01   作者:詩人與黑客  
這篇文章主要介紹了mybatis嵌套循環(huán)map方式(高級用法),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mybatis嵌套循環(huán)map

mybatis有默認的list,array,但是沒有默認的map。所以不能直接寫collection="map",如果這么寫,它會當成是根據(jù)map.get(“map”)來取value值,大部分情況下是一個map中是不會有“map”這個key的,于是就是報錯。

如果你想用這個“map”標識取參數(shù)map,就需要保證傳入的Map參數(shù)有@Param("map")注解。

mybatis入?yún)ap的基本語法

service,dao的寫法:

//service:
public List<BpmDefUser> getByMap(Map<String,List<Long>> map){
? ? ? ? Map<String,Object> paramsMap= new HashMap<String, Object>();
? ? ? ? params.put("paramsMap", map);
? ? ? ? return this.getByMap(paramsMap); ??
}
//dao:
int getByMap(Map<String,Object> map)

或者(推薦):

//service直接調(diào)用dao
int getByMap(@param("paramsMap") Map<String,Object> map)

xml的寫法:

循環(huán)key:

? ? <foreach collection="paramsMap.keys" item="k" separator="and"> ??
? ? ? ? ${k} = #{k} ? ?
? ? </foreach> ??

循環(huán)values

<foreach collection="paramsMap.values" item="v" separator="and"> ??
? ? ${v} = #{v} ? ?
</foreach> ?

循環(huán)獲取key和值:

<foreach collection="paramsMap.keys" item="k" separator="and"> ??
? ? <if test="null != paramsMap[k]"> ? ?
? ? ? ? ${k} = ${paramsMap[k]} ? ?
? ? </if> ?
</foreach> ??

或者一次循環(huán)得到key和value值(推薦):

<foreach collection="paramsMap" index="key" ?item="value">
? ? ? ? ?${key} = ${value}
</foreach>

易錯點:表達式抒寫錯誤

通常我們設(shè)置值的時候,會以#{}的方式,而不是${},如下:

<foreach collection="paramsMap.keys" item="k" separator=","> ??
? ? <if test="null != paramsMap[k]"> ? ?
? ? ? ? ${k} = #{paramsMap[k]} ? ?
? ? </if> ?
</foreach> ??

你會發(fā)現(xiàn),取不了值了,${condition[k]}  能取的出值,但#{condition[k]} 取出來的值卻實null,正確的寫法應該是:

<foreach collection="paramsMap.keys" item="k" separator=","> ??
? ? <if test="null != paramsMap[k]"> ? ?
? ? ? ? ${k} = #{paramsMap[${k}]} ?
? ? </if> ?
</foreach> ??

mybatis嵌套循環(huán)map的高級用法

假如參數(shù)類型是這么一個類型結(jié)構(gòu): Map map = new HashMap<String,HashSet<String>>,我想要拼裝出來的sql如下:

select * from 表名
where (
? ? (id = 1 and name in ('小二','小三','小四') or
? ? (id = 2 and name in ('小二','小三','趙六') or
? ? (id = 3 and name in ('小三','王五','王八') or
? ? ……
)

mybatis應該怎么寫?

第一種寫法:

?SELECT * FROM 表名
? ? ? ? WHERE?
? ? ? ? <foreach collection="paramsMap.keys" item="key" open="(" separator="OR" close=")">
? ? ? ? ? ? (id = #{key} AND name in
? ? ? ? ? ? ? <foreach collection = "paramsMap[key]" item="name" separator="," open="(" close=")">
? ? ? ? ? ? ? ? ? #{name}
? ? ? ? ? ? ? </foreach>
? ? ? ? ? ? )
? ? ? ? </foreach>

第二種寫法(推薦):

?SELECT * FROM 表名
? ? ? ? WHERE?
? ? ? ? <foreach collection="paramsMap" index="key" ?item="value" open="(" separator="OR" close=")">
? ? ? ? ? ? (id = #{key} AND name in
? ? ? ? ? ? ? <foreach collection = "value" item="name" separator="," open="(" close=")">
? ? ? ? ? ? ? ? ? #{name}
? ? ? ? ? ? ? </foreach>
? ? ? ? ? ? )
? ? ? ? </foreach>

mybatis中循環(huán)map集合操作

首先聲明一個MAP集合,用來存放數(shù)據(jù):如下圖:聲明map集合pd,將數(shù)據(jù)put到pd中,然后在聲明一個map集合params,將pd幾個放入params集合中,將params作為參數(shù),參入xml配置文件中:

在xml中:

傳入到xml文件中的集合params里,鍵值為relationMap對應著另一個map幾個pd,所以在<foreach>標簽中collection為relationMap,index為map的key,item為map的value;#{key},#{value}即可取到pd這個map集合中的鍵值。

至于${key},由于我寫的是個插入語句,key值作為字段,value作為值,#{key}取出來的為字符串,而oracle數(shù)據(jù)庫表明字段不能為字符串,用${key}取出即可;

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

相關(guān)文章

  • springboot bean掃描路徑的實現(xiàn)

    springboot bean掃描路徑的實現(xiàn)

    這篇文章主要介紹了springboot bean掃描路徑的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • EasyUi+Spring Data 實現(xiàn)按條件分頁查詢的實例代碼

    EasyUi+Spring Data 實現(xiàn)按條件分頁查詢的實例代碼

    這篇文章主要介紹了EasyUi+Spring Data 實現(xiàn)按條件分頁查詢的實例代碼,非常具有實用價值,需要的朋友可以參考下
    2017-07-07
  • 布隆過濾器詳解以及其在Java中的實際應用

    布隆過濾器詳解以及其在Java中的實際應用

    布隆過濾器是一種數(shù)據(jù)結(jié)構(gòu),比較巧妙的概率型數(shù)據(jù)結(jié)構(gòu)(probabilistic data structure),特點是高效地插入和查詢,這篇文章主要給大家介紹了關(guān)于布隆過濾器詳解以及其在Java中的實際應用,需要的朋友可以參考下
    2023-12-12
  • Mybatis結(jié)果生成鍵值對的實例代碼

    Mybatis結(jié)果生成鍵值對的實例代碼

    這篇文章主要介紹了Mybatis結(jié)果生成鍵值對的實例代碼,以及MyBatis返回Map鍵值對數(shù)據(jù)的實現(xiàn)方法,非常不錯,具有參考借鑒價值,需要的的朋友參考下
    2017-02-02
  • springmvc無法訪問/WEB-INF/views下的jsp的解決方法

    springmvc無法訪問/WEB-INF/views下的jsp的解決方法

    本篇文章主要介紹了springmvc無法訪問/WEB-INF/views下的jsp的解決方法,非常具有實用價值,需要的朋友可以參考下
    2017-10-10
  • Java 8 中 Map 騷操作之 merge() 的使用方法

    Java 8 中 Map 騷操作之 merge() 的使用方法

    本文簡單介紹了一下Map.merge()的方法,除此之外,Java 8 中的HashMap實現(xiàn)方法使用了TreeNode和 紅黑樹,原理很相似,今天通過本文給大家介紹Java 8 中 Map 騷操作之 merge() 的用法 ,需要的朋友參考下吧
    2021-07-07
  • Mybatis使用Collection屬性的示例代碼

    Mybatis使用Collection屬性的示例代碼

    本文主要介紹了Mybatis使用Collection屬性的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Java中遍歷Map的多種方法示例及優(yōu)缺點總結(jié)

    Java中遍歷Map的多種方法示例及優(yōu)缺點總結(jié)

    在java中遍歷Map有不少的方法,下面這篇文章主要給大家介紹了關(guān)于Java中遍歷Map的多種方法,以及各種方法的優(yōu)缺點總結(jié),文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • 如何使用MAVEN打JAR包(直接使用)

    如何使用MAVEN打JAR包(直接使用)

    這篇文章主要介紹了如何使用MAVEN打JAR包(直接使用),文中通過實例代碼介紹了maven?使用assembly插件進行打包的方法,需要的朋友可以參考下
    2023-03-03
  • Java序列化與反序列化的實例分析講解

    Java序列化與反序列化的實例分析講解

    今天小編就為大家分享一篇關(guān)于Java序列化與反序列化的實例分析講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評論