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

mybatis實(shí)現(xiàn)遍歷Map的key和value

 更新時(shí)間:2022年01月23日 09:45:31   作者:路路wg  
這篇文章主要介紹了mybatis實(shí)現(xiàn)遍歷Map的key和value方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis 遍歷Map的key和value

sql.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace必須是接口的全類名 -->
<mapper namespace="com.genius">
 
	<!-- 1.0 查詢表結(jié)構(gòu)是否存在 -->
	<select id="selectOne" parameterType="java.util.HashMap"
		resultType="java.util.HashMap">
		select count(*) as num from ${tableName} where seq =
		#{seq};
	</select>
 
	<!-- 1.1 插入一條數(shù)據(jù) -->
	<insert id="insertOne" parameterType="java.util.Map">
		insert into ${tableName}
		<foreach collection="content.keys" item="key" open="(" close=")"
			separator=",">
			${key}
		</foreach>
		values
		<foreach collection="content.values" item="value" open="("
			close=")" separator=",">
			#{value}
		</foreach>
	</insert>
 
	<!-- 1.2 更新記錄 -->
	<update id="updateOne" parameterType="java.util.Map">
		UPDATE ${tableName} SET
		<foreach collection="content.keys" item="key" open="" close=""
			separator=",">
			${key} = #{content[${key}]}
		</foreach>
		where seq = #{content[seq]} and genius_uid <=
		#{content[genius_uid]};
	</update>
 
	<!-- 1.3 刪除無效數(shù)據(jù) -->
	<delete id="deleteOne" parameterType="java.util.Map">
		delete from ${tableName}
		where seq = #{content[seq]};
	</delete>
 
</mapper>

java代碼

SqlSession session = MyBatisConnectionFactory.getSession("pg");
				HashMap<String, Object> params = new HashMap<>(); //傳入的參數(shù)
				params.put("content", tableContent);
				params.put("tableName", tableName);
				params.put("seq", seq);
int flag = session.delete("deleteOne", params); //刪除記錄
HashMap<String, Object> map = session.selectOne("selectOne", params); //查詢記錄是否存在
flag = session.update("updateOne", params) > 0 ? true : false; //更新
flag = session.insert("insertOne", params) > 0 ? true : false; //新增

foreach嵌套遍歷Map的key和value

最近做東西,需要向數(shù)據(jù)庫存儲(chǔ)一個(gè)保存在HashMap的key和value中的數(shù)據(jù)。具體的結(jié)構(gòu)大致是Map<Object, Set<String>>。

數(shù)據(jù)庫中需要保存兩個(gè)個(gè)字段:1.key中對象的id,set中的多個(gè)string,顯然id和set中的string是1對多的關(guān)系;需要嵌套循環(huán)。

一開始懷疑Mybatis能否做到這樣靈活sql,經(jīng)過嘗試,證明了Mybatis的強(qiáng)大。

具體做法:(Oracle數(shù)據(jù)庫)

<insert id="saveMatchResult" >
  INSERT INTO sp4_acl_so (acl_id, so_uuid__proc_def_id)
  <foreach collection="aclDeviceMap.keys" index="index" item="item" separator="UNION ALL">
    <foreach collection="aclDeviceMap[item]" index="index_set" item="set" separator="UNION ALL">
      SELECT #{item.aclId}, #{set}
      FROM DUAL
    </foreach>
  </foreach>
</insert>
  • aclDeviceMap:就是在接口中使用@Param("aclDeviceMap")標(biāo)注了變量

使用

aclDeviceMap.keys可以取到所有的key,遍歷。

內(nèi)層循環(huán)中使用

aclDeviceMap[item]類似aclDeviceMap.get("key")取當(dāng)前key對應(yīng)的value值。由于value是set所以還需要遍歷。

結(jié)果保存成功。再次膜拜強(qiáng)大的Mybatis。

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

相關(guān)文章

  • 基于EasyExcel實(shí)現(xiàn)百萬級數(shù)據(jù)導(dǎo)入導(dǎo)出詳解

    基于EasyExcel實(shí)現(xiàn)百萬級數(shù)據(jù)導(dǎo)入導(dǎo)出詳解

    大數(shù)據(jù)的導(dǎo)入和導(dǎo)出,相信大家在日常的開發(fā)、面試中都會(huì)遇到。本文將為大家詳細(xì)介紹一下如何利用EasyExcel實(shí)現(xiàn)百萬級數(shù)據(jù)導(dǎo)入導(dǎo)出,需要的可以參考一下
    2023-01-01
  • spring-boot-maven-plugin引入出現(xiàn)爆紅(已解決)

    spring-boot-maven-plugin引入出現(xiàn)爆紅(已解決)

    這篇文章主要介紹了spring-boot-maven-plugin引入出現(xiàn)爆紅(已解決),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 詳解Android系統(tǒng)中的root權(quán)限獲得原理

    詳解Android系統(tǒng)中的root權(quán)限獲得原理

    這篇文章主要介紹了詳解Android系統(tǒng)中的Root權(quán)限獲得原理,安卓基于Linux,所以原理也相當(dāng)于Linux中的root用戶,需要的朋友可以參考下
    2015-08-08
  • java中stream的peek()用法詳解

    java中stream的peek()用法詳解

    這篇文章主要介紹了java中stream的peek()用法詳解,peek的作用是
    改變元素的內(nèi)部狀態(tài),對每個(gè)object執(zhí)行 saveInfomation(object, params),然后把結(jié)果收集到一個(gè) List 里,這里涉及到了最終操作,需要的朋友可以參考下
    2024-01-01
  • 對SpringBoot項(xiàng)目Jar包進(jìn)行加密防止反編譯的方案

    對SpringBoot項(xiàng)目Jar包進(jìn)行加密防止反編譯的方案

    最近項(xiàng)目要求部署到其他公司的服務(wù)器上,但是又不想將源碼泄露出去,要求對正式環(huán)境的啟動(dòng)包進(jìn)行安全性處理,防止客戶直接通過反編譯工具將代碼反編譯出來,本文介紹了如何對SpringBoot項(xiàng)目Jar包進(jìn)行加密防止反編譯,需要的朋友可以參考下
    2024-08-08
  • Eclipse可視化插件WindowBuilder的安裝方法

    Eclipse可視化插件WindowBuilder的安裝方法

    這篇文章主要介紹了Eclipse可視化插件WindowBuilder的安裝方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • java使用MulticastSocket實(shí)現(xiàn)多點(diǎn)廣播

    java使用MulticastSocket實(shí)現(xiàn)多點(diǎn)廣播

    這篇文章主要為大家詳細(xì)介紹了java使用MulticastSocket實(shí)現(xiàn)多點(diǎn)廣播,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 一文詳解Java中多進(jìn)程與多線程處理

    一文詳解Java中多進(jìn)程與多線程處理

    在Java編程中,多進(jìn)程和多線程是兩種常見的并發(fā)編程技術(shù),用于提高程序的執(zhí)行效率和響應(yīng)速度,本文將為大家簡單介紹一下多進(jìn)程與多線程處理的相關(guān)知識,希望對大家有所幫助
    2025-01-01
  • 如何為Logback日志添加唯一追蹤ID

    如何為Logback日志添加唯一追蹤ID

    本文介紹了如何為Logback日志添加唯一追蹤ID,以便在測試和調(diào)試時(shí)更容易定位報(bào)錯(cuò)信息,通過創(chuàng)建過濾器和修改配置文件,可以在每個(gè)請求的日志中添加唯一的ID,并將其返回給前端,這樣,當(dāng)用戶反饋報(bào)錯(cuò)時(shí),開發(fā)人員可以根據(jù)ID快速定位和解決問題
    2024-12-12
  • java將圖片至暗的實(shí)現(xiàn)方法

    java將圖片至暗的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava將圖片至暗的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

普兰店市| 清水县| 利辛县| 周口市| 车致| 镶黄旗| 明水县| 兰西县| 天台县| 南和县| 德化县| 葫芦岛市| 汾西县| 晋州市| 扎囊县| 晴隆县| 电白县| 东平县| 宁陵县| 湘潭县| 哈尔滨市| 图木舒克市| 广丰县| 建瓯市| 宿州市| 闽清县| 康乐县| 嘉鱼县| 临清市| 衢州市| 精河县| 易门县| 承德县| 洞口县| 北川| 保康县| 阿瓦提县| 娄底市| 玉树县| 饶平县| 微博|