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

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

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

mybatis嵌套循環(huán)map

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

如果你想用這個(gè)“map”標(biāo)識(shí)取參數(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>

易錯(cuò)點(diǎn):表達(dá)式抒寫錯(cuò)誤

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

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

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

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

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

假如參數(shù)類型是這么一個(gè)類型結(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應(yīng)該怎么寫?

第一種寫法:

?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集合操作

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

在xml中:

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

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

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

相關(guān)文章

  • java獲取每月的最后一天實(shí)現(xiàn)方法

    java獲取每月的最后一天實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava獲取每月的最后一天實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 解析Hibernate + MySQL中文亂碼問題

    解析Hibernate + MySQL中文亂碼問題

    如果持久化的類中有包括了漢字的String對(duì)象,那么對(duì)應(yīng)到數(shù)據(jù)庫中漢字的部分就會(huì)是亂碼。這主要是由于MySQL數(shù)據(jù)表的字符集與我們當(dāng)前使用的本地字符集不相同造成的
    2013-07-07
  • Springboot如何根據(jù)docx填充生成word文件并導(dǎo)出pdf

    Springboot如何根據(jù)docx填充生成word文件并導(dǎo)出pdf

    這篇文章主要介紹了Springboot如何根據(jù)docx填充生成word文件并導(dǎo)出pdf問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Springboot下載excel文件中文名亂碼問題及解決

    Springboot下載excel文件中文名亂碼問題及解決

    這篇文章主要介紹了Springboot下載excel文件中文名亂碼問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java如何完成輸出語句實(shí)例詳解

    java如何完成輸出語句實(shí)例詳解

    輸入輸出可以說是計(jì)算機(jī)的基本功能,下面這篇文章主要給大家介紹了關(guān)于java如何完成輸出語句的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Spring框架實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼功能的代碼示例

    Spring框架實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼功能的代碼示例

    之前項(xiàng)目需要在驗(yàn)證碼模塊,增加滑動(dòng)驗(yàn)證碼,用來給手機(jī)端使用的,大概看了下,主要方法就是將圖片切割,然后記住偏移量,進(jìn)行滑動(dòng),所以本文給大家介紹了Spring框架實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼功能的方法示例,需要的朋友可以參考下
    2024-07-07
  • Java計(jì)算百分比的各種方法總結(jié)

    Java計(jì)算百分比的各種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java計(jì)算百分比的各種方法,要計(jì)算百分比并保留兩位小數(shù),首先需要明確計(jì)算公式和java語言的數(shù)學(xué)計(jì)算方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • 基于SpringBoot和Vue3的博客平臺(tái)的用戶注冊(cè)與登錄功能實(shí)現(xiàn)

    基于SpringBoot和Vue3的博客平臺(tái)的用戶注冊(cè)與登錄功能實(shí)現(xiàn)

    本教程將指導(dǎo)您如何使用Spring?Boot和Vue3實(shí)現(xiàn)用戶注冊(cè)與登錄功能。我們將使用Spring?Boot作為后端框架,Vue3作為前端框架,同時(shí)使用MySQL作為數(shù)據(jù)庫,感興趣的朋友可以參考一下
    2023-04-04
  • Java之理解Redis回收算法LRU案例講解

    Java之理解Redis回收算法LRU案例講解

    這篇文章主要介紹了Java之理解Redis回收算法LRU案例講解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java8新特性之JavaFX 8_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java8新特性之JavaFX 8_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Java8新特性之JavaFX 8的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-06-06

最新評(píng)論

调兵山市| 册亨县| 台北县| 民县| 文水县| 中西区| 兴安盟| 玛纳斯县| 岳普湖县| 铜鼓县| 天台县| 盐边县| 牡丹江市| 贵州省| 贵州省| 政和县| 宝兴县| 龙州县| 长宁区| 汉川市| 随州市| 扎赉特旗| 长海县| 房山区| 保亭| 盐源县| 安岳县| 怀安县| 肃宁县| 公安县| 涞源县| 大冶市| 应用必备| 刚察县| 内江市| 南陵县| 马边| 正安县| 东阿县| 灵台县| 平舆县|