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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

在ADF实体PK属性中使用MySQL自动增量PK列

發布時間:2023/12/3 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在ADF实体PK属性中使用MySQL自动增量PK列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好。 繼續進行ADF + MySQL解決方法系列,今天我們將看到要使用MySQL PK自動增量列和ADF實體PK屬性來進行的工作。 如果使用的是Oracle數據庫,則可以使用oracle.jbo.domain.DBSequence以及序列和觸發器來立即進行操作。

為簡單起見,我們將修改與Entity關聯的Java文件,但作為一種好的做法,您應該擁有自己的oracle.jbo.server.EntityImpl類實現并配置JDeveloper,以便它對每個新的版本都使用自己的實現應用程序中的實體。 有關更多信息,請查看此帖子 。

這不是關于如何從表中創建ADF BC的分步教程,我們假設您已經具有業務組件定義。

你需要什么

  • JDeveloper 12c
  • MySQL 5.5以上
  • 為ADF開發配置MySQL

這是我們將在本文中使用的數據庫表:

CREATE TABLE `test`.`Actor` (`id_actor` INT NOT NULL AUTO_INCREMENT ,`name` VARCHAR(100) NOT NULL ,PRIMARY KEY (`id_actor`) );

從表創建實體后,JDeveloper將針對表列映射Entity屬性,并根據列的類型設置一些屬性。 例如,對于我們的PK列(id_actor),JDeveloper會將屬性設置為強制性 Integer并且始終可更新。 我們需要進行更改,因為我們希望我們的PK 在新的 (創建新實例時)是可更新的, 而 不是強制性的 (因為我們在發布到數據庫后正在讀取自動增量值):

您的數據庫中可能有幾個表,因此您的ADF應用程序中有多個實體,但是并非所有的表都可能具有自動增量PK列,因此我們需要一種方法來標記或標識實體的PK屬性何時來自數據庫的自動增量列。 我們將使用Property Set來做到這一點,它允許我們定義鍵/值屬性的集合,然后我們可以將這些屬性關聯到屬性并在運行時訪問它們:

  • 在JDeveloper中,選擇: File –> New –> From Gallery…
  • 在ADF業務組件中,選擇“ 屬性集”
  • 設置新屬性集的名稱和包:
  • 創建之后,我們可以定義鍵/值屬性集,如果要向用戶顯示這些屬性,我們甚至可以以可翻譯模式定義它們。 這不是我們的情況,因此我們將定義一個不可翻譯的屬性:
  • 將屬性名稱設置為AI (對于AutoIncrement),并將其值設置為true (因為使用此屬性集的屬性來自于autoincrement列):
  • 現在我們已經準備好屬性集,可以在Entity PK屬性中使用它:
  • 為了檢索PK屬性的autoincrement值,我們需要重寫Entity類的默認實現(請記住,為簡單起見,請執行此操作,但是您可以按照本文開頭的介紹做得更好)。 我們可以通過為Entity實現Java類,然后重寫EntityImpl.doDML(int,TransactionEvent)方法(將更改發布到數據庫的方法)來實現:

  • 轉到實體的Java部分,然后單擊鉛筆圖標:

  • 在彈出窗口中,選擇Generate Entity Object Class: ...,然后單擊OK:
  • 現在,Entity類的Java部分顯示Java文件,單擊指向Java File名稱的鏈接:
  • JDeveloper將打開一個包含Java代碼的新窗口。 復制并粘貼以下方法: ...@Overrideprotected void doDML(int i, TransactionEvent transactionEvent) {//got to call first to super, so the record is posted //and we can then ask for the last insert idsuper.doDML(i, transactionEvent);//after the record is inserted, we can ask for the last insert idif (i == DML_INSERT) {populateAutoincrementAtt();}}/** Determines if the Entity PK is marked as an autoincrement col* and executes a MySQL function to retrieve the last insert id*/private void populateAutoincrementAtt() {EntityDefImpl entdef = this.getEntityDef();AttributeDef pk = null;//look for primary key with Autoincrement property setfor (AttributeDef att : entdef.getAttributeDefs()) {if (att.isPrimaryKey() && (att.getProperty("AI") != null && new Boolean(att.getProperty("AI").toString()))) {pk = att;break;}}if (pk != null) {try (PreparedStatement stmt = this.getDBTransaction().createPreparedStatement("SELECT last_insert_id()", 1)) {stmt.execute();try (ResultSet rs = stmt.getResultSet()) {if (rs.next()) {setAttribute(pk.getName(), rs.getInt(1));}}} catch (SQLException e) {e.printStackTrace();}}} ...

    上面的代碼將更改發布到數據庫,然后詢問是否要插入值。 如果是這種情況,我們需要檢索自動增量值并將其設置在我們的PK屬性中。 有關獲取自動增量值的更多信息,請參考MySQL函數LAST_INSERT_ID() 。

  • 好的,讓我們嘗試一下我們的解決方案。 首先,運行您的應用程序模塊:

    一旦出現Oracle ADF Model Tester工具,請選擇(雙擊)左側面板上的ActorView1視圖對象,然后單擊右側面板上的綠色加號圖標,以添加新的Actor:

    輸入Actor的名稱,然后按“將更改保存到數據庫”按鈕(帶有工具欄上的清單圖標的小數據庫):

    您會注意到,自動增量值現已設置為
    idActor屬性!

    無需擔心并發插入,MySQL文檔指出可以(請查看此文檔 ):

    同時使用多個客戶端的LAST_INSERT_ID()和AUTO_INCREMENT列是完全有效的。 每個客戶端將收到該客戶端執行的最后一條語句的最后插入的ID。

    • 下載本文中使用的ADF項目 。

    再見!

    參考: Java和ME博客的JCG合作伙伴 Alexis Lopez 在ADF實體PK屬性中使用MySQL自動增量PK列 。

    翻譯自: https://www.javacodegeeks.com/2013/11/using-mysql-autoincrement-pk-column-in-adf-entity-pk-attribute.html

    總結

    以上是生活随笔為你收集整理的在ADF实体PK属性中使用MySQL自动增量PK列的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 成人做爰69片免费 | 在线视频观看免费 | 一级不卡毛片 | 人人妻人人爽欧美成人一区 | 中国美女性猛交 | 野花成人免费视频 | 国产精品jizz | 特级一级黄色片 | 大香蕉精品一区 | 麻豆国产一区二区 | 深爱激情五月婷婷 | 777精品伊人久久久久大香线蕉 | 免费日本黄色 | 国产精品国色综合久久 | 人人看人人澡 | 先锋资源一区 | 粉嫩av国产一区二区三区 | 色午夜av | 五月天婷婷伊人 | 在线观看网站av | 一区二区欧美在线观看 | 涩涩视频网站 | 亚洲免费色视频 | 国产毛片欧美毛片久久久 | 狠狠干b| 日韩三级大片 | 日本少妇吞精囗交视频 | 国产精品国产三级国产专区51 | 3d动漫精品啪啪一区二区三区免费 | 亚洲国产精品网站 | 最新国产网站 | 日韩视频在线观看一区二区 | 91微拍| 亚洲淫| 中文字幕精品一区二区三区视频 | 欧美日本高清 | 又大又长粗又爽又黄少妇视频 | 激情午夜视频 | 亚洲av无码一区二区乱子伦 | 黄色a毛片| 国产伦理自拍 | 欧美偷拍一区二区 | 韩国精品久久久 | 欧美日韩综合精品 | 青青草视频在线免费观看 | 久久激情网站 | 精品人妻无码一区二区三区换脸 | www.爆操 | 黄色视屏在线看 | 91久久国产综合久久91 | 91精品免费看 | 亚洲国产精品一区 | 老熟妻内射精品一区 | 婷婷综合社区 | 亚洲国产欧美日韩 | 亚洲乱色熟女一区二区三区 | 久久久久久久久久久网 | 特黄一区二区三区 | 性色欲网站人妻丰满中文久久不卡 | 婷婷综合五月 | 在线99热| 亚洲v在线| 丰满双乳秘书被老板狂揉捏 | 99性趣网| 成人在线一区二区 | 人人澡超碰碰 | 大尺度做爰啪啪床戏 | 久久久久亚洲av成人网人人网站 | 日本资源在线 | 国产91精选 | jizz中国女人高潮 | 亚洲欧美日韩免费 | 国产精品一区久久 | 女人扒开屁股让男人捅 | 久久中文字幕人妻熟av女蜜柚m | 日韩欧美第一区 | 未满十八岁禁止进入 | 免费在线黄色网 | 久久91精品| 国产一区欧美一区 | 免费无遮挡无码永久在线观看视频 | 绿帽av| 国产操人 | www日韩在线 | 久久丫精品 | 91大神在线观看视频 | 亚洲妇女体内精汇编 | 亚洲免费av一区二区 | h在线播放| 黄a网站| 国产一级伦理片 | 特级av | 人妻少妇被猛烈进入中文字幕 | av无码久久久久久不卡网站 | 清冷男神被c的合不拢腿男男 | 激情网页| 情不自禁电影 | 国产夜夜夜 | 中文字幕在线网站 |