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

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

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

Mybatis插入時返回自增主鍵

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

<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則會有報錯信息。通過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ù)的時候有兩種方式返回自增主鍵:

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是支持批量插入時返回自增主鍵的。(百度上說不支持的,多打臉 開玩笑的)

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

解決辦法

1、升級Mybatis版本到3.3.1。

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

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

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

相關(guān)文章

  • IDEA集成MyBatis Generator插件的使用

    IDEA集成MyBatis Generator插件的使用

    這篇文章主要介紹了IDEA集成MyBatis Generator插件的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java如何實現(xiàn)判斷并輸出文件大小

    Java如何實現(xiàn)判斷并輸出文件大小

    這篇文章主要介紹了Java如何實現(xiàn)判斷并輸出文件大小問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 總結(jié)Java常用的時間相關(guān)轉(zhuǎn)化

    總結(jié)Java常用的時間相關(guān)轉(zhuǎn)化

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Java常用的時間相關(guān)轉(zhuǎn)化展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java生成動態(tài)版驗證碼的方法實例

    Java生成動態(tài)版驗證碼的方法實例

    這篇文章主要給大家介紹了利用Java生成動態(tài)版驗證碼的方法實例,本文生成的是GIF格式 + 干擾元素,讓驗證碼破解難度又上了一個層次,文中給出了詳細(xì)的示例代碼,并在文末給出了完整的實例代碼供大家下載學(xué)習(xí),需要的朋友們下面來一起看看吧。
    2017-04-04
  • java讀寫ini文件、FileOutputStream問題

    java讀寫ini文件、FileOutputStream問題

    這篇文章主要介紹了java讀寫ini文件、FileOutputStream問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 最新評論

    建湖县| 江北区| 临清市| 嘉义县| 类乌齐县| 铜梁县| 和龙市| 化德县| 保德县| 万年县| 潮州市| 新干县| 汤原县| 西乌珠穆沁旗| 望谟县| 嘉峪关市| 宁安市| 象山县| 灌云县| 伊吾县| 郸城县| 介休市| 昆明市| 砀山县| 安福县| 汾西县| 高青县| 聂拉木县| 张家川| 白朗县| 施秉县| 南昌市| 黄石市| 太谷县| 怀集县| 华亭县| 乐亭县| 花垣县| 陇川县| 仁布县| 大厂|