日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

新增一个主键自增长_MyBatis 示例-主键回填

發(fā)布時間:2023/12/4 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 新增一个主键自增长_MyBatis 示例-主键回填 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

測試類:com.yjw.demo.PrimaryKeyTest

自增長列

數據庫表的主鍵為自增長列,在寫業(yè)務代碼的時候,經常需要在表中新增一條數據后,能獲得這條數據的主鍵 ID,MyBatis 提供了實現的方法。

StudentMapper.xml

<insert id="insertByAutoInc" parameterType="studentDO" keyProperty="id" useGeneratedKeys="true">insert into t_student (name, sex, selfcard_no, note)values (#{name,jdbcType=VARCHAR},#{sex,jdbcType=TINYINT},#{selfcardNo,jdbcType=BIGINT},#{note,jdbcType=VARCHAR}) </insert>

通過配置兩個屬性(keyProperty、useGeneratedKeys)獲取表中生成的自增長主鍵。

  • keyProperty:表示以哪個列作為屬性的主鍵,不能和 keyColumn 同時使用,如果你是聯(lián)合主鍵可以用逗號將其隔開;
  • useGeneratedKeys:這會令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法來取出由數據庫內部生成的主鍵,例如,MySQL 和 SQL Server 自動遞增字段,Oracle 的序列等,但是使用它就必須要給 keyProperty 或者 keyColumn 賦值。useGeneratedKeys 的取值為布爾值,true/false,默認值為 false;

批量新增數據,也可以采用和上面一樣的方式。

<insert id="batchInsertByAutoInc" parameterType="list" keyProperty="id" useGeneratedKeys="true">insert into t_student (name, sex, selfcard_no, note)values <foreach collection="list" item="item" index="index" separator=",">(#{item.name,jdbcType=VARCHAR},#{item.sex,jdbcType=TINYINT},#{item.selfcardNo,jdbcType=BIGINT},#{item.note,jdbcType=VARCHAR})</foreach> </insert>

非自增長列

假設我們取消表 t_student 的 id 自增的規(guī)則,我們的要求是:如果表 t_student 沒有記錄,則我們需要設置 id=1,否則我們就取最大 id 加2,來設置新的主鍵。對于一些特殊的要求,MyBatis 也提供了對應方法。

<insert id="insertByNoAutoInc" parameterType="studentDO"><selectKey keyProperty="id" resultType="long" order="BEFORE">select if(max(id) is null, 1, max(id) + 2) as newId from t_student</selectKey>insert into t_student (id, name, sex, selfcard_no, note)values (#{id,jdbcType=BIGINT},#{name,jdbcType=VARCHAR},#{sex,jdbcType=TINYINT},#{selfcardNo,jdbcType=BIGINT},#{note,jdbcType=VARCHAR}) </insert>

批量新增數據,也可以采用和上面一樣的方式。

<insert id="batchInsertByNoAutoInc" parameterType="list"><selectKey keyProperty="id" resultType="long" order="BEFORE">select if(max(id) is null, 1, max(id) + 2) as newId from t_student</selectKey>insert into t_student (name, sex, selfcard_no, note)values<foreach collection="list" item="item" index="index" separator=",">(#{item.name,jdbcType=VARCHAR},#{item.sex,jdbcType=TINYINT},#{item.selfcardNo,jdbcType=BIGINT},#{item.note,jdbcType=VARCHAR})</foreach> </insert>架構筆記 · 語雀?www.yuque.com

總結

以上是生活随笔為你收集整理的新增一个主键自增长_MyBatis 示例-主键回填的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。