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

Mybatis插入時(shí)返回自增主鍵方式(selectKey和useGeneratedKeys)

 更新時(shí)間:2021年09月24日 09:34:25   作者:南橋追光  
這篇文章主要介紹了Mybatis插入時(shí)返回自增主鍵方式(selectKey和useGeneratedKeys),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mybatis插入時(shí)返回自增主鍵

通過selectKey在插入操作前或者操作后獲取key值,做為字段插入或返回字段。(此段代碼獲取的序列值id作為字段值插入到實(shí)體類中返回)

<insert id="insert">
 <selectKey keyProperty="id" resultType="int" order="AFTER">
  SELECT id FROM myTable
 </selectKey> 
 INSERT INTO myTable VALUES(#{id}, #{name})
</insert>

useGeneratedKeys

如果數(shù)據(jù)庫支持自增長主鍵字段(比如mysql、sql server)設(shè)置useGeneratedKeys=”true”和keyProperty="Id",id 是表的主鍵名,這樣就可以插入主鍵id值

oracle則不支持自增長id,設(shè)置useGeneratedKey=”false”,如果設(shè)置true則會有報(bào)錯(cuò)信息。通過nextval函數(shù),如SEQ_table.Nextval生成id

<insert id="addCover" parameterType="java.util.Map" useGeneratedKeys="true" keyProperty="Id">
 insert into cover(title,path,update_time)
 values(#{title},#{path},#{update_time}) 
</insert> 
int addCover(Map<String,Object> map);

Mybatis批量插入返回自增主鍵

我們都知道Mybatis在插入單條數(shù)據(jù)的時(shí)候有兩種方式返回自增主鍵:

1、對于支持生成自增主鍵的數(shù)據(jù)庫:useGenerateKeys和keyProperty。

2、不支持生成自增主鍵的數(shù)據(jù)庫:<selectKey>。

但是怎對批量插入數(shù)據(jù)返回自增主鍵的解決方式網(wǎng)上看到的還是比較少,至少百度的結(jié)果比較少。

Mybatis官網(wǎng)資料提供如下:

First, if your database supports auto-generated key fields (e.g. MySQL and SQL Server), then you can simply set useGeneratedKeys="true" and set the keyProperty to the target property and you're done. For example, if the Authortable above had used an auto-generated column type for the id, the statement would be modified as follows:

<insert id="insertAuthor" useGeneratedKeys="true"
    keyProperty="id">
  insert into Author (username,password,email,bio)
  values (#{username},#{password},#{email},#{bio})
</insert>

If your database also supports multi-row insert, you can pass a list or an array of Authors and retrieve the auto-generated keys.

<insert id="insertAuthor" useGeneratedKeys="true"
    keyProperty="id">
  insert into Author (username, password, email, bio) values
  <foreach item="item" collection="list" separator=",">
    (#{item.username}, #{item.password}, #{item.email}, #{item.bio})
  </foreach>
</insert>

從官網(wǎng)資料可以看出Mybatis是支持批量插入時(shí)返回自增主鍵的。(百度上說不支持的,多打臉 開玩笑的)

但是在本地測試的時(shí)候使用上述方式確實(shí)不能返回自增id,而且還報(bào)錯(cuò)(不認(rèn)識keyProperty中指定的Id屬性),然后在網(wǎng)上找相關(guān)資料。終于在Stackoverflow上面找到了一些信息。

解決辦法

1、升級Mybatis版本到3.3.1。

2、在Dao中不能使用@param注解。

3、Mapper.xml中使用list變量接受Dao中的集合。

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

相關(guān)文章

  • SpringBoot中的Actuator詳解

    SpringBoot中的Actuator詳解

    這篇文章主要介紹了SpringBoot中的Actuator詳解,Spring Boot Actuator 在Spring Boot第一個(gè)版本發(fā)布的時(shí)候就有了,它為Spring Boot提供了一系列產(chǎn)品級的特性,監(jiān)控應(yīng)用程序,收集元數(shù)據(jù),運(yùn)行情況或者數(shù)據(jù)庫狀態(tài)等,需要的朋友可以參考下
    2023-09-09
  • 淺談Java Fork/Join并行框架

    淺談Java Fork/Join并行框架

    這篇文章主要介紹了淺談Java Fork/Join并行框架,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Springboot傳輸數(shù)據(jù)時(shí)日期格式化問題

    Springboot傳輸數(shù)據(jù)時(shí)日期格式化問題

    這篇文章主要介紹了Springboot傳輸數(shù)據(jù)時(shí)日期格式化問題,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Java正則環(huán)視和反向引用功能與用法詳解

    Java正則環(huán)視和反向引用功能與用法詳解

    這篇文章主要介紹了Java正則環(huán)視和反向引用功能與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了java正則環(huán)視與反向引用的相關(guān)概念與使用方法,需要的朋友可以參考下
    2018-01-01
  • Java多線程 BlockingQueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型詳解

    Java多線程 BlockingQueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型詳解

    這篇文章主要介紹了Java多線程 BlockingQueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • SpringCloud分布式項(xiàng)目下feign的使用示例詳解

    SpringCloud分布式項(xiàng)目下feign的使用示例詳解

    這篇文章主要介紹了SpringCloud分布式項(xiàng)目下feign的使用,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java中的InputStreamReader和OutputStreamWriter源碼分析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java中的InputStreamReader和OutputStreamWriter源碼分析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    本文通過示例代碼給大家解析了Java中的InputStreamReader和OutputStreamWriter知識,需要的的朋友參考下吧
    2017-05-05
  • Java數(shù)據(jù)結(jié)構(gòu)順序表用法詳解

    Java數(shù)據(jù)結(jié)構(gòu)順序表用法詳解

    順序表是計(jì)算機(jī)內(nèi)存中以數(shù)組的形式保存的線性表,線性表的順序存儲是指用一組地址連續(xù)的存儲單元依次存儲線性表中的各個(gè)元素、使得線性表中在邏輯結(jié)構(gòu)上相鄰的數(shù)據(jù)元素存儲在相鄰的物理存儲單元中,即通過數(shù)據(jù)元素物理存儲的相鄰關(guān)系來反映數(shù)據(jù)元素之間邏輯上的相鄰關(guān)系
    2021-10-10
  • 在SpringBoot項(xiàng)目中獲取Request的四種方法

    在SpringBoot項(xiàng)目中獲取Request的四種方法

    這篇文章主要為大家詳細(xì)介紹了SpringBoot項(xiàng)目中獲取Request的四種方法,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-11-11
  • Java中線程狀態(tài)+線程安全問題+synchronized的用法詳解

    Java中線程狀態(tài)+線程安全問題+synchronized的用法詳解

    這篇文章主要介紹了Java中線程狀態(tài)+線程安全問題+synchronized的用法詳解,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04

最新評論