MyBatis Generator(MBG)扩展MyBatis生成器

来源:互联网 发布:php 探针 不支持mssql 编辑:程序博客网 时间:2024/05/22 21:34

扩展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有任何疑问,请随时向mybatis-user@googlegroups.com的支持邮件列表发送备注。
扩展与插入

虽然在此页面上显示了许多不同的扩展点,但在大多数情况下,通过使用插件来扩展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.IntrospectedTableMyBatis3ImplIbatis2Java2org.mybatis.generator.codegen.ibatis2.IntrospectedTableIbatis2Java2ImplIbatis2Java5org.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配置中指定完全限定类名,如下所示:

    <javaTypeResolver type="mypackage.MyImplementation">      ...    </javaTypeResolver>
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集成)来运行您的实现。
原文:Extending MyBatis Generator

相关阅读:

MyBatis Generator (MBG) 代码生成器简介

MyBatis Generator 代码生成器 快速入门指南

MyBatis Generator XML 配置文件参考

运行 MyBatis Generator 后的任务

运行MyBatis Generator

MyBatis Generator中的新功能

SSM框架——使用 MyBatis Generator 生成代码,包括:Model、Dao、Mapping

从源码构建

实现插件

日志信息

提供的插件

设计哲学与致歉


阅读全文
1 0