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

Mybatis @SelectKey用法解讀

 更新時(shí)間:2021年09月24日 09:21:37   作者:SihgYu  
這篇文章主要介紹了Mybatis @SelectKey用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mybatis @SelectKey用法

用處

主要用來(lái)解決主鍵自增問(wèn)題

用法

@SelectKey(statement="SELECT LAST_INSERT_ID()", keyProperty="clusterId", before=false, resultType=Integer.class)

屬性

  • keyProperty 語(yǔ)句結(jié)果被設(shè)置的屬性
  • resultType 結(jié)果的類型
  • order 可以被設(shè)置為before和after 如果設(shè)置為 BEFORE,那么它會(huì)首先選擇主鍵,設(shè)置 keyProperty 然后執(zhí)行插入語(yǔ)句。如果設(shè)置為 AFTER,那么先執(zhí)行插入語(yǔ)句,然后是 selectKey 元素-這和如 Oracle 數(shù)據(jù)庫(kù)相似,可以在插入語(yǔ)句中嵌入序列調(diào)用。
  • statement 和前面的相 同,MyBatis 支持 STATEMENT ,PREPARED 和CALLABLE 語(yǔ)句的映射類型,分別代表 PreparedStatement 和CallableStatement 類型。

注意

SelectKey需要注意order屬性,像Mysql一類支持自動(dòng)增長(zhǎng)類型的數(shù)據(jù)庫(kù)中,order需要設(shè)置為after才會(huì)取到正確的值。像Oracle這樣取序列的情況,需要設(shè)置為before,否則會(huì)報(bào)錯(cuò)。像Oracle這樣取序列的情況,需要設(shè)置為before,否則會(huì)報(bào)錯(cuò)。

Mybatis selectKey 采坑筆記

1.現(xiàn)象描述

觀察某張表的數(shù)據(jù)時(shí),發(fā)現(xiàn)設(shè)置了自增屬性的AutoId,在插入數(shù)據(jù)后并不是自增的,而是數(shù)值跳躍著增加的。

2.問(wèn)題排查

在確認(rèn)AutoId的自增屬性設(shè)置沒有問(wèn)題后,開始懷疑是不是insert語(yǔ)句的問(wèn)題,insert語(yǔ)句是MyBatis Generator自動(dòng)生成的,示例如下:

<insert id="insert" parameterType="com.xx.yy.datasource.domain.User" >
  <selectKey resultType="java.lang.Long" keyProperty="autoId" order="BEFORE" >
  SELECT LAST_INSERT_ID()
</selectKey>
  insert into User (AutoId, UserId, Mobile, Username, CreateTime, LastModifyTime)
  values (#{autoId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{mobile,jdbcType=VARCHAR}, 
   #{username,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{lastModifyTime,jdbcType=TIMESTAMP}
   )
 </insert>

insert into 語(yǔ)句在語(yǔ)法上是沒有問(wèn)題的,那縮小排查范圍,就是selectKey的用法可能有問(wèn)題!

3. selectKey 用法再認(rèn)識(shí)

  • resultType表示的是返回主鍵的類型
  • keyProperty對(duì)應(yīng)的domain 對(duì)象中需要被賦值的屬性,一般是主鍵
  • order如果設(shè)置為 BEFORE,那么它會(huì)首先選擇主鍵,設(shè)置 keyProperty 然后執(zhí)行插入語(yǔ)句。如果設(shè)置為 AFTER,那么先執(zhí)行插入語(yǔ)句,然后是 selectKey 元素

4.selectKey用法的坑

SelectKey需要注意order屬性,像MySQL一類支持自動(dòng)增長(zhǎng)類型的數(shù)據(jù)庫(kù)中,order需要設(shè)置為after才會(huì)取到正確的值,像Oracle這樣取序列的情況,需要設(shè)置為before。

在上面示例的insert用法中,就是order屬性設(shè)置成了BEFORE才導(dǎo)致自增屬性沒有生效。改成AFTER后,主鍵就開始自增了。

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

相關(guān)文章

  • SpringBoot如何返回Json數(shù)據(jù)格式

    SpringBoot如何返回Json數(shù)據(jù)格式

    這篇文章主要介紹了SpringBoot如何返回Json數(shù)據(jù)格式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 關(guān)于在Java中使用預(yù)定義類

    關(guān)于在Java中使用預(yù)定義類

    這篇文章主要介紹了關(guān)于在Java中使用預(yù)定義類,預(yù)定義類就是Java類庫(kù)(或第三方庫(kù))中已經(jīng)定義好的類,例如,Math 類和 Date 類,需要的朋友可以參考下
    2023-05-05
  • Java發(fā)送郵箱驗(yàn)證碼、session校驗(yàn)功能

    Java發(fā)送郵箱驗(yàn)證碼、session校驗(yàn)功能

    本篇主要描述“發(fā)送郵箱驗(yàn)證碼、session校驗(yàn)”相關(guān)前(html\js)后(java)臺(tái)代碼,業(yè)務(wù)邏輯示例,需要的朋友可以參考下
    2018-02-02
  • IntelliJ IDEA 2020.3 重大特性(新功能一覽)

    IntelliJ IDEA 2020.3 重大特性(新功能一覽)

    這篇文章主要介紹了IntelliJ IDEA 2020.3 重大特性(新功能一覽),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 通過(guò)使用Byte?Buddy便捷創(chuàng)建Java?Agent

    通過(guò)使用Byte?Buddy便捷創(chuàng)建Java?Agent

    這篇文章主要為大家介紹了如何通過(guò)使用Byte?Buddy便捷創(chuàng)建Java?Agent的使用說(shuō)明,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Java實(shí)現(xiàn)計(jì)算一個(gè)月有多少天和多少周

    Java實(shí)現(xiàn)計(jì)算一個(gè)月有多少天和多少周

    這篇文章主要介紹了Java實(shí)現(xiàn)計(jì)算一個(gè)月有多少天和多少周,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-06-06
  • 詳解Java實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)之并查集

    詳解Java實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)之并查集

    并查集這種數(shù)據(jù)結(jié)構(gòu),可能出現(xiàn)的頻率不是那么高,但是還會(huì)經(jīng)常性的見到,其理解學(xué)習(xí)起來(lái)非常容易,通過(guò)本文,一定能夠輕輕松松搞定并查集
    2021-06-06
  • java TreeUtil菜單遞歸工具類

    java TreeUtil菜單遞歸工具類

    這篇文章主要為大家詳細(xì)介紹了java TreeUtil菜單遞歸工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • SpringBoot?AOP統(tǒng)一處理Web請(qǐng)求日志的示例代碼

    SpringBoot?AOP統(tǒng)一處理Web請(qǐng)求日志的示例代碼

    springboot有很多方法處理日志,例如攔截器,aop切面,service中代碼記錄等,下面這篇文章主要給大家介紹了關(guān)于SpringBoot?AOP統(tǒng)一處理Web請(qǐng)求日志的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • java自定義線程池的原理簡(jiǎn)介

    java自定義線程池的原理簡(jiǎn)介

    這篇文章主要介紹了java自定義線程池的原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評(píng)論