国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Mybatis批量插入返回插入成功后的主鍵id操作

瀏覽:3日期:2023-10-19 15:21:06

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

1、對于支持生成自增主鍵的數(shù)據(jù)庫:增加 useGenerateKeys和keyProperty ,<insert>標(biāo)簽屬性。

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 useGeneratedKeys='true' keyProperty='id'> insert into Author (username,password,email,bio) values (#{username},#{password},#{email},#{bio})</insert> 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 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> 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。官方在這個版本中加入了批量新增返回主鍵id的功能

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

3、Mapper.xml中使用list變量(parameterType='java.util.List')接受Dao中的參數(shù)集合。

下面是具體代碼過程,可供參考

mapper.xml層代碼

<!-- 批量新增 --> <insert parameterType='java.util.List' useGeneratedKeys='true' keyProperty='id' > INSERT INTO <include refid='t_shop_resource' /> (relation_id, summary_id, relation_type) VALUES <foreach collection='list' index='index' item='shopResource' separator=','> ( #{shopResource.relationId}, #{shopResource.summaryId}, #{shopResource.relationType} ) </foreach> </insert>

dao實現(xiàn)層代碼

public List<ShopResource> batchinsertCallId(List<ShopResource> shopResourceList) { this.getSqlSession().insert(getStatement(SQL_BATCH_INSERT_CALL_ID), shopResourceList); return shopResourceList;// 重點介紹 }

補充:MyBatis 插入的同時獲取主鍵id

有時候進(jìn)行一些多步操作的時候就需要得到最新插入一條記錄的id號,那么如何在插入的同時返回id號

Mapper代碼:

<insert parameterType='com.yj.pojo.Feeds' useGeneratedKeys='true' keyProperty='id'> insert into feeds (id, title, content, pic, video, auther_id, comments, favours, likes, cover_select, views, set_time, kind) values (#{id,jdbcType=INTEGER}, #{title,jdbcType=VARCHAR}, #{content,jdbcType=VARCHAR}, #{pic,jdbcType=VARCHAR}, #{video,jdbcType=VARCHAR}, #{autherId,jdbcType=VARCHAR}, #{comments,jdbcType=INTEGER}, #{favours,jdbcType=INTEGER}, #{likes,jdbcType=INTEGER}, #{coverSelect,jdbcType=INTEGER}, #{views,jdbcType=INTEGER}, #{setTime,jdbcType=VARCHAR}, #{kind,jdbcType=VARCHAR}) </insert>service層:

當(dāng)設(shè)置了useGeneratedKeys='true' keyProperty='id'后,它會在你插入數(shù)據(jù)庫的同時,將這個對象的id值改為最新的那個id,然后我們只需要取出他就可以了

Mybatis批量插入返回插入成功后的主鍵id操作

最終效果:

數(shù)據(jù)庫

Mybatis批量插入返回插入成功后的主鍵id操作

輸出

Mybatis批量插入返回插入成功后的主鍵id操作

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽: Mybatis 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 欧美三级美国一级 | 国产精品v欧美精品v日本精 | 国产综合亚洲专区在线 | 欧美精品久久天天躁 | 亚洲三级黄色片 | 国产精品特黄毛片 | 欧美一级欧美一级在线播放 | 狠狠综合久久久综合 | 国产亚洲精品久久久久久午夜 | 色一伦一情一区二区三区 | 日本二区免费一片黄2019 | 美女视频黄色在线观看 | 免费看男女做好爽好硬视频 | 99在线观看免费视频 | 92精品国产成人观看免费 | 99久久免费看精品国产一区 | 国产精品人伦久久 | 亚洲精品国产成人99久久 | 草草影院国产第一页 | 久久毛片免费看 | 一级毛片真人免费观看 | 自拍 欧美 | 久久精品视频播放 | 亚洲精品手机在线 | 久久国产精品免费网站 | 一级成人a做片免费 | 另类自拍 | 久久精品无遮挡一级毛片 | 在线精品亚洲欧洲第一页 | 91精品久久久久 | 特级毛片在线播放 | 韩国在线精品福利视频在线观看 | 国产精品久久久久久搜索 | 日韩欧美一区二区精品久久 | 久久不见久久见免费影院www日本 | 国产在线观看精品香蕉v区 国产在线观看免费人成小说 | 国产一区二区免费在线观看 | 亚洲国产毛片aaaaa无费看 | 日韩亚洲一区中文字幕 | 成人久久伊人精品伊人 | 国产手机在线视频放线视频 |