扩展MyBatis Generator

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有任何的困难,您可以在支持的邮件列表mybatis-user@googlegroups.com 发送信息。

扩展与插入

虽然本网页上显示了许多不同的扩展点,在大多数情况下,这将是很容易通过使用插件扩展MBG。查阅开发插件的参考页面了解更多信息。

代码生成的主要扩展点是org.mybatis.generator.api.IntrospectedTable 。实现一个代码生成器是一个有意义的任务,只有当您想要完全取代MBG的代码生成活动时才考虑。自从Abator的原始版本以来,很少出现有增强请求无法通过一个插件来处理的。

扩展点

MBG提供了许多不同的扩展点。以下部分列出扩展MBG的不同方法,并描述了可以实现与不同的扩展活动的类型。如果您需要一些了解不同的选择的帮助,您可以自由的在用户邮件列表上询问问题。

org.mybatis.generator.api.IntrospectedTable

IntrospectedTable是一个可以扩展用于提供和MBG供给的版本不同的代码生成的抽象类。这种实现的一个很好的例子是基于一个FreeMarker的或Velocity模板的实现。在大多数其他情况下,编写插件是一个更好途径。

如果您选择扩展这个类,您必须提供代码来生成Java和XML文件。您可以选择生成的这些文件的技术。IntrospectedTable基础类持有的一个org.mybatis.generator.internal.rules.Rules实例可查询许多用于代码生成的规则。

MBG提供反射表的几种实现。实现基于<context>元素的targetRuntime属性值。在大多数情况下,继承下面的一个内置的扩展比从头开始创建一个实现会容易很多。下表显示了内置的实现: