pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

mybatis?獲取更新(update)記錄的id之<selectKey>用

這篇文章主要介紹了mybatis?獲取更新(update)記錄的id之selectKey用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

獲取更新(update)記錄的id之<selectKey>

問題

用mybatis update 記錄,更新過后想要更新記錄的id 怎么辦?

平常我門都是更新數據,用更新的條件再查詢一次,得到更新的記錄。這樣我門就進行了兩次數據庫操作,鏈接了兩次數據庫。增加了接口的處理事件,因為鏈接數據庫是很耗時的操作。

簡介

其實可以通過 mybatis 的 selectKey 標簽來解決這個問題。

selectKey 這個標簽大家基本上都用過,比如在插入數據的時候,返回插入數據的紀錄。如:

?<selectKey resultType="int" order="AFTER" keyProperty="id">
? ? ? ? ? ? SELECT LAST_INSERT_ID()
?</selectKey>
insert into ?。。。。此處省略
  • resultType :返回的類型,為簡單類型。
  • order: 在insert into 語句執行后執行。
  • keyProperty : 語句執行結果的 返回目標屬性

SELECT LAST_INSERT_ID() 為查詢主體。

此處用法用法就是當 insert into 執行后 執行 selectKey 的內容將數據庫的最后一個id 查詢出來映射到傳入數據對像的ID 屬性。

解決 獲取update 紀錄的id

假設我門有個 bean 為people

public class People {
private Integer id?
private String name;
private String email;
...
}

現在我門寫一個更新語句,并將更新的紀錄的ID 返回出來。mybatis 語句如下:

通過 People 的name 去更新 People 的email,并獲取被更新紀錄的id。

? ? <update id="updateByUserName" parameterType="com.test.bean.People">
?<selectKey keyProperty='id' resultType='int' order='BEFORE'>
? ? ? ? ? ? SELECT
? ? ? ? ? ? (select id FROM people WHERE
? ? ? ? ? ? ?name = #{name})id
? ? ? ? ? ? from DUAL
? </selectKey>
? ? ? ? UPDATE people SET
? ? ? email=#{email}
? ? ? ? WHERE
? ? ? ?name =#{name}
? </update>

上述代碼就是通過 selectKey 實現了 通過 People 的name 去更新 People 的email,并獲取被更新紀錄的id。

詳解

?<selectKey keyProperty='id' resultType='int' order='BEFORE'>

此處的 keyProperty=’id’ 是指將查詢出來的id 映射到傳入updateByUserName 的people 的id 。類型為int

因為可能查到name 以后可能會修改name 所以order=’BEFORE’ 要在執行update之前進行查詢,并把id返回出來。

SELECT
? ? (select id FROM people WHERE
? ? name = #{name})id
from DUAL?

此 SELECT 就是為了獲取 被更新的 people 的id 外邊包裝一個虛表查詢是當 name = #{name} 查詢不到紀錄時不會報空紀錄,會返回 null ,這個就很關鍵了。

當返回空記錄的時候 mybatis會報錯,說不能轉換成 int 型。

當返回null的時候就會轉換成int 的 0 。不會報錯,代表沒有查到。(是不是很機智?)

下邊的的更新語句就不說了…

? ?UPDATE people SET
? ? ? email=#{email}
? ? ? ? WHERE
? ? ? ?name =#{name}

<selectKey>標簽的含義

MyBatis 標簽

這個標簽主要用于Insert數據時不支持主鍵自動生成的問題

selectKey keyProperty=”m_Id” order=”AFTER” resultType=”int”>
select LAST_INSERT_ID()
selectKey>

SelectKey需要注意order屬性。像Mysql一類支持自動增長類型的數據庫中,order需要設置為after才會取到正確的值。

像Oracle這樣取序列的情況,需要設置為before,否則會報錯

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持html5模板網。

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

主站蜘蛛池模板: 双杰天平-国产双杰电子天平-美国双杰-常熟双杰仪器 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 法兰螺母 - 不锈钢螺母制造厂家 - 万千紧固件--螺母街 | 反渗透水处理设备|工业零排放|水厂设备|软化水设备|海南净水设备--海南水处理设备厂家 | 协议书_协议合同格式模板范本大全 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 冷却塔降噪隔音_冷却塔噪声治理_冷却塔噪音处理厂家-广东康明冷却塔降噪厂家 | 焊锡丝|焊锡条|无铅锡条|无铅锡丝|无铅焊锡线|低温锡膏-深圳市川崎锡业科技有限公司 | 超声波清洗机_大型超声波清洗机_工业超声波清洗设备-洁盟清洗设备 | 软启动器-上海能曼电气有限公司 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 芜湖厨房设备_芜湖商用厨具_芜湖厨具设备-芜湖鑫环厨具有限公司 控显科技 - 工控一体机、工业显示器、工业平板电脑源头厂家 | 砍排机-锯骨机-冻肉切丁机-熟肉切片机-预制菜生产线一站式服务厂商 - 广州市祥九瑞盈机械设备有限公司 | 粉末包装机,拆包机厂家,价格-上海强牛包装机械设备有限公司 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 润东方环保空调,冷风机,厂房车间降温设备-20年深圳环保空调生产厂家 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | T恤衫定做,企业文化衫制作订做,广告T恤POLO衫定制厂家[源头工厂]-【汉诚T恤定制网】 | 体坛网_体坛+_体坛周报新闻客户端 | 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 全自动贴标机-套标机-工业热风机-不干胶贴标机-上海厚冉机械 | 连续密炼机_双转子连续密炼机_连续式密炼机-南京永睿机械制造有限公司 | 萃取箱-萃取槽-PVC萃取箱厂家-混合澄清槽- 杭州南方化工设备 | 游动电流仪-流通式浊度分析仪-杰普仪器(上海)有限公司 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 民用音响-拉杆音响-家用音响-ktv专用音响-万昌科技 |