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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

160613、MyBatis insert操作返回主键

發(fā)布時間:2025/7/14 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 160613、MyBatis insert操作返回主键 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在使用MyBatis做持久層時,insert語句默認是不返回記錄的主鍵值,而是返回插入的記錄條數(shù);如果業(yè)務(wù)層需要得到記錄的主鍵時,可以通過配置的方式來完成這個功能,針對Sequence主鍵而言,在執(zhí)行insert sql前必須指定一個主鍵值給要插入的記錄,如Oracle、DB2,可以采用如下配置方式:

<insert id="add" parameterType="vo.Category">

<selectKey resultType="Java.lang.Short" order="BEFORE" keyProperty="id">

SELECT SEQ_TEST.NEXTVAL?FROM DUAL

</selectKey>

insert into category (name_zh, parent_id,

show_order, delete_status, description

)

values (#{nameZh,jdbcType=VARCHAR},

#{parentId,jdbcType=SMALLINT},

#{showOrder,jdbcType=SMALLINT},

#{deleteStatus,jdbcType=BIT},

#{description,jdbcType=VARCHAR}

)

</insert>

?針對自增主鍵的表,在插入時不需要主鍵,而是在插入過程自動獲取一個自增的主鍵,比如MySQL,可以采用如下兩種配置方式:

<insert id="add" parameterType="vo.Category" useGeneratedKeys="true" keyProperty="id">

insert into category (name_zh, parent_id,

show_order, delete_status, description

)

values (#{nameZh,jdbcType=VARCHAR},

#{parentId,jdbcType=SMALLINT},

#{showOrder,jdbcType=SMALLINT},

#{deleteStatus,jdbcType=BIT},

#{description,jdbcType=VARCHAR}

)

</insert>

?

?

<insert id="add" parameterType="vo.Category">

<selectKey resultType="java.lang.Short" order="AFTER" keyProperty="id">

SELECT LAST_INSERT_ID() AS id

</selectKey>

insert into category (name_zh, parent_id,

show_order, delete_status, description

)

values (#{nameZh,jdbcType=VARCHAR},

#{parentId,jdbcType=SMALLINT},

#{showOrder,jdbcType=SMALLINT},

#{deleteStatus,jdbcType=BIT},

#{description,jdbcType=VARCHAR}

)

</insert>

?

在插入操作完成之后,參數(shù)category的id屬性就已經(jīng)被賦值了

?

如果數(shù)據(jù)庫表的主鍵不是自增的類型,那么就需要應(yīng)用層生成主鍵的方式··········這個就不多說了,需要的朋友,可以留言交流··

?

-----------------------------------------

?

?

下面是針對Oracle的寫法,Oracle沒有autoincrement,而是用觸發(fā)器實現(xiàn)的 CURRVAL是在觸發(fā)器中定義的.
<insert id="insert" parameterClass="ProFeeKindObject">
????? <![CDATA[
???????? INSERT INTO t_pro_feeKind (KINDID,kindName,kindType,enable)
???????? VALUES (seq_t_pro_feekind_id.nextval,#kindName#,#kindType#,#enable#)
??????? ]]>
??????? <selectKey resultClass="java.lang.Integer" keyProperty="kindId" >
??????? SELECT seq_t_pro_feekind_id.CURRVAL AS kindId FROM DUAL
??????? </selectKey>????
</insert>

<!-- 下面是針對MySQL的寫法 -->
<!--
?? <selectKey resultClass="int" keyProperty="id" >
?? SELECT @@IDENTITY AS id
?? </selectKey>
-->
其他參考代碼:
持久化某個實體對象(如保存一個對象)時,如果我們不用selectKey,那么我們不會立刻得到實體對象的Id屬性的,也就是數(shù)據(jù)表主鍵
Java代碼
Permission permission = new Permission();?
permission.set...?

permmisonDao.createPermission(permission);?
assertNull(permission);?
Permission permission = new Permission();
permission.set...

permmisonDao.createPermission(permission);
assertNull(permission);

selectKey元素與其在父元素中的位置有關(guān)

<insert id="addPermission" parameterClass="Permission">????
???? <selectKey resultClass="int" keyProperty="permissionId">????
???????? SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL?????
???? </selectKey>????
???? INSERT INTO P_PERMISSION (?
???????? PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL?
???? ) VALUES (?
???????? #permissionId#, #permissionInfo#, #permissionName#, #permissionEnName#, #url#?
???? )?????
</insert>

<insert id="addPermission" parameterClass="Permission">?
<selectKey resultClass="int" keyProperty="permissionId">?
SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL???
</selectKey>?
INSERT INTO P_PERMISSION (
PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL
) VALUES (
#permissionId#, #permissionInfo#, #permissionName#, #permissionEnName#, #url#
)???
</insert>

Mysql、SQLServer在后
Xml代碼

<insert id="addPermission" parameterClass="Permission">??????
INSERT INTO P_PERMISSION (?
???? PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL?
) VALUES (?
???? #permissionId#, #permissionInfo#, #permissionName#, #permiss
ionEnName#, #url#?
)?
<selectKey resultClass="int" keyProperty="permissionId">????
???? SELECT LAST_INSERT_ID()?????
</selectKey>?
</insert>

<insert id="addPermission" parameterClass="Permission">????
INSERT INTO P_PERMISSION (
PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL
) VALUES (
#permissionId#, #permissionInfo#, #permissionName#, #permissionEnName#, #url#
)
<selectKey resultClass="int" keyProperty="permissionId">?
SELECT LAST_INSERT_ID()???
</selectKey>
</insert>

像上面這樣書寫,與selectKey的位置聯(lián)系得太緊密了,iBatis的sqlMap配置文件的selectKey元素有個type屬性,可以指定pre或者post表示前生成還是后生成。
對于Oracle,表示為
Xml代碼

<insert id="addPermission" parameterClass="Permission">????
??? <selectKey resultClass="int" keyProperty="permissionId" type="pre">????
??????? SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL?????
??? </selectKey>????
??? INSERT INTO P_PERMISSION (?
??????? PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL?
??? ) VALUES (?
??????? #permissionId#, #permissionInfo#, #permissionName#, #permissionEnName#, #url#?
??? )?????
</insert>???


<insert id="addPermission" parameterClass="Permission">?
<selectKey resultClass="int" keyProperty="permissionId" type="pre">?
SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL???
</selectKey>?
INSERT INTO P_PERMISSION (
PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL
) VALUES (
#permissionId#, #permissionInfo#, #permissionName#, #permissionEnName#, #url#
)???
</insert>

Mysql、SQLServer等表示為:
Xml代碼

<insert id="addPermission" parameterClass="Permission">????
???? <selectKey resultClass="int" keyProperty="permissionId" type="post">????
???????? SELECT LAST_INSERT_ID()?
???? </selectKey>????
???? INSERT INTO P_PERMISSION (?
???????? PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL?
???? ) VALUES (?
???????? #permissionId#, #permissionInfo#, #permissionName#, #permissionEnName#, #url#?
???? )?????
</insert>

轉(zhuǎn)載于:https://www.cnblogs.com/zrbfree/p/5571137.html

總結(jié)

以上是生活随笔為你收集整理的160613、MyBatis insert操作返回主键的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人9999 | 一区二区乱码 | 美女考逼 | 黄色不卡 | 欧美成人午夜免费视在线看片 | 欧洲成人午夜精品无码区久久 | 99久久精 | 人人模人人干 | 黑人一级 | 野花社区视频在线观看 | 久久精品国产亚洲av无码娇色 | 欧美精品在欧美一区二区 | 欧美干干干 | 亚洲视频a | 中文一区视频 | 黄网站在线免费看 | 欧美大黄视频 | 久久国产视频播放 | www.com日本| 亚洲 欧美 视频 | 亚洲一二区在线 | 欧美性猛交xxxx黑人猛交 | 91激情| www.久久精品视频 | 亚洲福利视频网 | 成人影视在线播放 | 欧美aaaaa| 国产毛茸茸 | 成人三级电影网站 | 精品99在线 | 成人黄色在线观看视频 | 中文字幕网伦射乱中文 | 日日摸夜夜添夜夜添高潮喷水 | 丝袜人妖 | 91尤物视频在线观看 | 国产精品一线 | 一区二区三区小视频 | 综合网久久 | 国产精品久久久久蜜臀 | 玖玖视频网 | 色哟哟在线免费观看 | 亚洲AV无码久久精品色三人行 | 亚洲免费专区 | 日韩五月天 | 国产高清av在线 | 91久久久精品 | 欧美中文字幕一区二区 | 久操伊人 | 天天躁夜夜躁av天天爽 | 日韩在线一区二区 | 免费av软件| 国产femdom调教7777 | 韩国日本美国免费毛片 | 卡一卡二视频 | 久草影视在线 | 91福利在线导航 | 四虎免费看黄 | 亚洲av无码国产精品永久一区 | 四季av一区二区夜夜嗨 | 这里只有精品视频在线观看 | 激情久久av | 射死你天天日 | 少妇中文字幕 | h部分肌肉警猛淫文 | 欧美日韩亚洲成人 | 黄色一级片 | 自拍视频在线观看 | 欧美整片sss | avtt久久| 久久精品欧美一区 | 四虎影视永久 | 日本精品在线视频 | 亚洲成人免费在线视频 | 波多野一区 | 18被视频免费观看视频 | 成人福利在线看 | 武侠古典av | 国产精品99久久久久久www | 色综合天天色综合 | 日韩中文字幕久久 | 国产婷婷色一区二区在线观看 | 中文字幕第11页 | 国产毛片视频 | 加勒比波多野结衣 | 国产系列在线观看 | 天天操天天操天天操天天操天天操 | 亚洲天堂999 | 自拍视频在线播放 | 女人下面喷水视频 | 黄色三级网站在线观看 | 黄色网页观看 | 久久亚洲AV成人无码国产野外 | 欧美一级黄色网 | 黄色图片小说 | 伊人久久爱 | jizz国产视频 | 爱情岛亚洲品质自拍极速福利网站 | 97日韩精品 | 91精品推荐|