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

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

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

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ù)庫存儲一個保存在HashMap的key和value中的數(shù)據(jù)。具體的結(jié)構(gòu)大致是Map<Object, Set<String>>。

數(shù)據(jù)庫中需要保存兩個個字段:1.key中對象的id,set中的多個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。

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

相關(guān)文章

  • Java?方法(方法的定義,可變參數(shù),參數(shù)的傳遞問題,方法重載,方法簽名)

    Java?方法(方法的定義,可變參數(shù),參數(shù)的傳遞問題,方法重載,方法簽名)

    這篇文章主要介紹了Java?方法(方法的定義,可變參數(shù),參數(shù)的傳遞問題,方法重載,方法簽名),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-09-09
  • Java讀取txt文件和寫入txt文件的簡單實例

    Java讀取txt文件和寫入txt文件的簡單實例

    下面小編就為大家?guī)硪黄狫ava讀取txt文件和寫入txt文件的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • RabbitMQ使用案例詳解

    RabbitMQ使用案例詳解

    RabbitMQ是基于Erlang語言開發(fā)的開源的消息中間件,這篇文章給大家介紹RabbitMQ使用案例,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 詳解Java正則表達(dá)式語法

    詳解Java正則表達(dá)式語法

    這篇文章主要介紹了Java正則表達(dá)式語法,包括常用正則表達(dá)式、匹配驗證-驗證Email是否正確以及字符串中查詢字符或者字符串,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Java實現(xiàn)LRU緩存算法的參考示例

    Java實現(xiàn)LRU緩存算法的參考示例

    這篇文章主要介紹了JAVA實現(xiàn)LRU緩存算法的參考示例,幫助大家根據(jù)需求實現(xiàn)算法,對大家的學(xué)習(xí)或工作有一定的參考價值,需要的朋友可以參考下
    2023-05-05
  • 使用Spring開啟@Async異步方式(javaconfig配置)

    使用Spring開啟@Async異步方式(javaconfig配置)

    這篇文章主要介紹了使用Spring開啟@Async異步方式(javaconfig配置),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 淺談Thread.sleep()為什么要拋出中斷異常

    淺談Thread.sleep()為什么要拋出中斷異常

    本文主要介紹了淺談Thread.sleep()為什么要拋出中斷異常,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Dubbo+Nacos服務(wù)啟動報錯,返回unknown user的問題

    Dubbo+Nacos服務(wù)啟動報錯,返回unknown user的問題

    這篇文章主要介紹了Dubbo+Nacos服務(wù)啟動報錯,返回unknown user的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Spring中的@Conditional注解實現(xiàn)分析

    Spring中的@Conditional注解實現(xiàn)分析

    這篇文章主要介紹了Spring中的@Conditional注解實現(xiàn)分析,  @Conditional是Spring 4出現(xiàn)的注解,但是真正露出價值的是Spring Boot的擴(kuò)展@ConditionalOnBean等,需要的朋友可以參考下
    2023-12-12
  • Java中JDBC實現(xiàn)動態(tài)查詢的實例詳解

    Java中JDBC實現(xiàn)動態(tài)查詢的實例詳解

    從多個查詢條件中隨機(jī)選擇若干個組合成一個DQL語句進(jìn)行查詢,這一過程叫做動態(tài)查詢。下面通過實例代碼給大家講解JDBC實現(xiàn)動態(tài)查詢的方法,需要的朋友參考下吧
    2017-07-07

最新評論