擴充MyBatis生成器
MyBatis Generator(MBG)是為擴充性設計的。
使用Java和XML元素的簡單DOM表示來執行所有代碼生成。Java DOM包含在包org.mybatis.generator.api.dom.java中XML DOM包含在包org.mybatis.generator.api.dom.xml中這些類對于每種可能的代碼生成可能性都不夠,但它們對于生成簡單到中等複雜的Java和XML代碼是非常有用的。使用配置檔案中的選項,您可以提供自己的許多關鍵代碼生成接口的實作。您還可以将任何提供的實作子類化以提供自定義行為。該頁面将描述可用的公共API,并提供指向源代碼的指針以供進一步調查。
如果您對如何擴充MBG有任何疑問,請随時向[email protected]的支援郵件清單發送備注。
擴充與插入
雖然在此頁面上顯示了許多不同的擴充點,但在大多數情況下,通過使用插件來擴充MBG将會更加容易。有關詳細資訊,請參閱實施插件參考頁面。代碼生成的主要擴充點是org.mybatis.generator.api.IntrospectedTable。實作代碼生成器是一項不平凡的任務,隻有當您想要完全替代MBG的代碼生成活動時,才應該考慮這一點。在Abator的原始版本之後的幾年裡,很少有增強請求出現,無法被插件處理。擴充點
MBG提供了許多不同的擴充點。以下部分列出了擴充MBG的不同方法,并描述了使用不同擴充可以實作的活動類型。如果您需要幫助了解不同的選項,請随時在使用者郵件清單中提出問題。org.mybatis.generator.api.IntrospectedTableIntrospectedTable是一個抽象類,可以擴充為提供與MBG提供的版本不同的代碼生成器。這種實作的一個很好的例子是基于FreeMarker或Velocity模闆的實作。在大多數其他情況下,編碼插件是更好的方法。如果您選擇擴充此類,則必須提供代碼來生成Java和XML檔案。您可以選擇使用您選擇的技術生成這些檔案。基礎IntrospectedTable類包含可以查詢的org.mybatis.generator.internal.rules.Rules的執行個體,以确定代碼生成的許多規則。MBG提供了幾個内省表的實作。該實作是基于<context>元素的targetRuntime屬性的值來選擇的。在許多情況下,擴充其中一個内置的實作将會更簡單,而不是從頭建立一個實作。下表顯示了内置實作:
目标運作時
實作類
MyBatis3 (default)
org.mybatis.generator.codegen.mybatis3.IntrospectedTableMyBatis3Impl
Ibatis2Java2
org.mybatis.generator.codegen.ibatis2.IntrospectedTableIbatis2Java2Impl
Ibatis2Java5
org.mybatis.generator.codegen.ibatis2.IntrospectedTableIbatis2Java5Impl
如果您選擇實作此擴充點,請使用<context>元素的targetRuntime屬性指定實作的完全限定類名。
org.mybatis.generator.api.IntrospectedColumn
IntrospectedColumn是一個類,它儲存有關從資料庫中繼資料傳回的列的資訊。在一些罕見的情況下,可能需要重寫此類來提供自己的實作 - 特别是如果您建立一組新的代碼生成器。如果您選擇實作此擴充點,請使用<context>元素的introspectedColumnImpl屬性指定實作的完全限定類名。org.mybatis.generator.api.JavaTypeResolver
MBG調用此接口中的方法,以便在資料庫内省期間将JDBC類型映射到Java類型。此接口的預設實作是org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl。您可以提供自己的實作,并且預設實作被設計為可擴充性。要提供自己的實作,請在XML配置中指定完全限定類名,如下所示:
org.mybatis.generator.api.ShellCallback
MBG調用此接口中的方法來執行它不能獨立執行的功能。這些功能中最重要的是:将項目/包轉換為目錄結構如果存在同名/包的現有Java檔案,則合并Java源檔案。這個界面的預設實作是org.mybatis.generator.internal.DefaultShellCallback。預設實作隻需将項目和包合并在一起,并在需要時建立必需的包目錄。預設的實作不支援合并Java檔案,并且将覆寫或忽略檔案。您可以提供自己的實作。如果您想将MBG內建到其他環境中,這将是寫入最重要的類。例如,Eclipse插件提供了在Eclipse環境中運作時支援Java檔案合并的此接口的實作。要提供自己的實作,請将構造函數上的接口執行個體提供給org.mybatis.generator.api.MyBatisGenerator對象。這不能通過XML進行配置。如果您提供自己的這個界面的實作,那麼我們假設您還提供一些附加代碼(如新的Ant任務)來運作您的實作。org.mybatis.generator.api.ProgressCallback
MBG調用此接口中的方法來報告檔案生成過程中的進度(長時間運作的過程)。這個接口的預設實作是org.mybatis.generator.internal.NullProgressCallback,它隻是忽略所有的進度消息。您可以提供此界面的實作來支援進度通知和取消代碼生成。将MBG內建到其他IDE環境中時,實作此界面将非常重要。Eclipse插件提供了一個這個接口的實作,它挂接到Eclipse的進度通知系統中。要提供自己的實作,請在org.mybatis.generator.api.MyBatisGenerator.generate()方法調用之一上提供一個接口執行個體。這不能通過XML進行配置。再次,我們假設如果您提供自己的這個接口的實作,那麼您還提供一些附加代碼(如新的Ant任務或IDE內建)來運作您的實作。
相關閱讀:
<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/77863171">MyBatis Generator (MBG) 代碼生成器簡介</a>
<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/77863524">MyBatis Generator 代碼生成器 快速入門指南</a>
<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/77863744">MyBatis Generator XML 配置檔案參考</a>
<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/77865513">運作 MyBatis Generator 後的任務</a>
<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/77866036">MyBatis Generator中的新功能</a>
<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/77867724">SSM架構——使用 MyBatis Generator 生成代碼,包括:Model、Dao、Mapping</a>
<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/77896131">從源碼建構</a>
<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/77979078">實作插件</a>
<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/77979113">日志資訊</a>
<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/77979141">提供的插件</a>
<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/77896545">設計哲學與緻歉</a>