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

mybatis@insert?注解如何判斷insert或是update

 更新時(shí)間:2022年07月11日 09:34:27   作者:大器晚成程序郎  
這篇文章主要介紹了mybatis@insert?注解如何判斷insert或是update,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@insert注解判斷insert或update

最近參與研發(fā)了一個(gè)項(xiàng)目,需要用到mybatis,和我之前接觸的不同,我們的sql語(yǔ)句并沒(méi)有寫(xiě)在xml中,而是使用的注解。

所以在此做個(gè)筆記方便以后查找。

@insert 注解

簡(jiǎn)單的就不多說(shuō)主要是有個(gè)業(yè)務(wù)需求,當(dāng)一條數(shù)據(jù)存在時(shí)update ,不存在時(shí)insert,這時(shí)就會(huì)用到 ON DUPLICATE KEY UPDATE

其中appserverid 和 userid 是主鍵

@Insert({
?? ??? ?"INSERT INTO KZT_APPSERVER_HISTORY(APPSERVERID,USERID) values(#{appid},#{userid})",
? ? ? ?"ON DUPLICATE KEY UPDATE `TIMES` = `TIMES`+1 ",
?? ??? ?})
?? ?int addHistory(@Param("userid") String userid,@Param("appid") String appid);

實(shí)現(xiàn)insert Or update的操作

在工作過(guò)程中 我們會(huì)經(jīng)常遇到 saveOrUpdate這種情況 而Mbatis中并沒(méi)有提供這樣的操作

在這里 我們通過(guò)selectKey 這個(gè)標(biāo)簽來(lái)實(shí)現(xiàn)saveOrUpdate

selectKey的作用是在mybatis框架中,在插入到表格之后或者之前,查詢主鍵的值。

selectKey有以下幾個(gè)屬性

  • resultType:返回的主鍵的類型
  • keyPropety:實(shí)體類對(duì)應(yīng)的主鍵的屬性。
  • order:如果是after,那么先插入,在執(zhí)行selectKey中的sql。如果是before,則反之。

從上面的屬性中我們可以明確 可以在插入前先查 然后進(jìn)行if else 判斷 從而實(shí)現(xiàn)saveOrUpdate 列出一段代碼實(shí)例以供參考

其中 order="BEFORE" 尤為關(guān)鍵 

<insert id="insertStat" parameterType="com.thd2000.freela.domain.Stat">
		<selectKey keyProperty="statId" resultType="int" order="BEFORE">
    		select count(*) FROM tb_stat 
    		<include refid="Where_Clause" />
		</selectKey> 
		<if test="statId == 0">
		insert into tb_stat 
		(
			stat_type,
			stat_key,
			stat_num,
			create_time,
			update_time,
			stat_type_key,
			stat_type_usertype,
			stat_type_userid,
			stat_type_planid
		)
		values
		(
			#{statType},
			#{statKey},
			#{statNum},
			NOW(),
			NOW(),
			#{statTypeKey},
			#{statTypeUserType},
			#{statTypeUserId,jdbcType=VARCHAR},
			#{statTypePlanId,jdbcType=VARCHAR}
		) 
		</if>
		<if test="statId > 0">
   	 update tb_stat set  stat_num=stat_num+#{statNum},update_time=NOW() 
   	 <include refid="Where_Clause" />
  </if>
	</insert>

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

相關(guān)文章

  • Java 手寫(xiě)LRU緩存淘汰算法

    Java 手寫(xiě)LRU緩存淘汰算法

    本文主要講了如何通過(guò)哈希鏈表這種數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)LRU算法,提供了三種實(shí)現(xiàn)思路,第一種從雙向鏈表開(kāi)始,借助于HashMap來(lái)實(shí)現(xiàn)滿足要求的LRUCache
    2021-05-05
  • JavaMail郵件發(fā)送機(jī)制詳解

    JavaMail郵件發(fā)送機(jī)制詳解

    這篇文章主要介紹了JavaMail郵件發(fā)送機(jī)制詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Spring MVC獲取參數(shù)和自定義參數(shù)類型轉(zhuǎn)換器及編碼過(guò)濾器

    Spring MVC獲取參數(shù)和自定義參數(shù)類型轉(zhuǎn)換器及編碼過(guò)濾器

    這篇文章主要為大家詳細(xì)介紹了Spring MVC獲取參數(shù)和自定義參數(shù)類型轉(zhuǎn)換器及編碼過(guò)濾器,文中通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-06-06
  • SpringMVC如何獲取表單數(shù)據(jù)(radio和checkbox)

    SpringMVC如何獲取表單數(shù)據(jù)(radio和checkbox)

    這篇文章主要介紹了SpringMVC如何獲取表單數(shù)據(jù)(radio和checkbox)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • JDK21新特性Record?Patterns記錄模式詳解(最新推薦)

    JDK21新特性Record?Patterns記錄模式詳解(最新推薦)

    這篇文章主要介紹了JDK21新特性Record?Patterns記錄模式詳解,本JEP建立在Pattern?Matching?for?instanceof(JEP?394)的基礎(chǔ)上,該功能已在JDK?16中發(fā)布,它與Pattern?Matching?for?switch(JEP?441)共同演進(jìn),需要的朋友可以參考下
    2023-09-09
  • SpringBoot業(yè)務(wù)邏輯異常的處理方法介紹

    SpringBoot業(yè)務(wù)邏輯異常的處理方法介紹

    本篇文章為大家展示了如何在SpringBoot中統(tǒng)一處理邏輯異常,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲
    2022-09-09
  • Java 使用Calendar計(jì)算時(shí)間的示例代碼

    Java 使用Calendar計(jì)算時(shí)間的示例代碼

    這篇文章主要介紹了Java 使用Calendar計(jì)算時(shí)間的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • SpringBoot3實(shí)現(xiàn)webclient的通用方法詳解

    SpringBoot3實(shí)現(xiàn)webclient的通用方法詳解

    Spring Boot WebClient 是 Spring Framework 5 中引入的一個(gè)新的響應(yīng)式 Web 客戶端,用于異步和響應(yīng)式地與外部服務(wù)進(jìn)行通信,下面我們就來(lái)看看SpringBoot3實(shí)現(xiàn)webclient的通用方法吧
    2024-04-04
  • 聊聊java變量的初始化之后的默認(rèn)值

    聊聊java變量的初始化之后的默認(rèn)值

    這篇文章主要介紹了聊聊java變量的初始化之后的默認(rèn)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • MyBatis傳入List集合查詢數(shù)據(jù)問(wèn)題

    MyBatis傳入List集合查詢數(shù)據(jù)問(wèn)題

    這篇文章主要介紹了MyBatis傳入List集合查詢數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論

蕉岭县| 丹阳市| 崇义县| 萨嘎县| 廉江市| 日土县| 襄垣县| 稷山县| 陈巴尔虎旗| 五寨县| 莫力| 天祝| 临泽县| 永胜县| 水城县| 正阳县| 义马市| 张家港市| 连江县| 海安县| 沈阳市| 澎湖县| 衡山县| 阳高县| 宜宾市| 沭阳县| 吉木萨尔县| 铜川市| 湟源县| 周宁县| 塔河县| 西青区| 丁青县| 营口市| 聂拉木县| 广水市| 宜良县| 洪泽县| 扎兰屯市| 镇坪县| 盐城市|