adf 自动输稿器_在ADF实体PK属性中使用MySQL自动增量PK列
adf 自動輸稿器
大家好。 繼續進行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 在新的 (創建新實例時)是可更新的, 而 不是強制性的 (因為我們在發布到數據庫后正在讀取autoincrement值):
您的數據庫中可能有幾個表,因此您的ADF應用程序中有多個實體,但是并非所有表都可能具有自動增量PK列,因此我們需要一種方法來標記或標識實體的PK屬性何時來自數據庫中的自動增量列。 我們將使用Property Set來做到這一點,它允許我們定義鍵/值屬性的集合,然后我們可以將這些屬性關聯到屬性并在運行時訪問它們:
為了檢索PK屬性的autoincrement值,我們需要覆蓋Entity類的默認實現(請記住,為簡單起見,請執行此操作,但您可以按照本文開頭的介紹做得更好)。 我們可以通過為Entity實現Java類,然后重寫EntityImpl.doDML(int,TransactionEvent)方法(將更改發布到數據庫的方法)來實現:
上面的代碼將更改發布到數據庫,然后詢問我們是否要插入值。 如果是這種情況,我們需要檢索自動增量值并將其設置在我們的PK屬性中。 有關獲取自動增量值的更多信息,請參考MySQL函數LAST_INSERT_ID() 。
好的,讓我們嘗試一下我們的解決方案。 首先,運行您的應用程序模塊:
出現Oracle ADF Model Tester工具后,在左側面板上選擇(雙擊) ActorView1視圖對象,然后在右側面板上單擊綠色的加號圖標,以添加新的Actor:
輸入Actor的名稱,然后按“將更改保存到數據庫”按鈕(工具欄上帶有清單圖標的小數據庫):
您會注意到,自動增量值現已設置為
idActor屬性!
無需擔心并發插入,MySQL文檔指出可以(請查看此文檔 ):
同時使用多個客戶端的LAST_INSERT_ID()和AUTO_INCREMENT列是完全有效的。 每個客戶端將收到該客戶端執行的最后一條語句的最后插入的ID。
- 下載本文中使用的ADF項目 。
拜拜!
翻譯自: https://www.javacodegeeks.com/2013/11/using-mysql-autoincrement-pk-column-in-adf-entity-pk-attribute.html
adf 自動輸稿器
總結
以上是生活随笔為你收集整理的adf 自动输稿器_在ADF实体PK属性中使用MySQL自动增量PK列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微型电脑系统组成部件(微型电脑系统组成部
- 下一篇: 幽默用英语怎么说 如何用英语说幽默