MyBatis Generator(MBG)扩展MyBatis生成器

扩展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.IntrospectedTable IntrospectedTable是一个抽象类,可以扩展为提供与MBG提供的版本不同的代码生成器。 这种实现的一个很好的例子是基于FreeMarker或Velocity模板的实现。 在大多数其他情况下,编码插件是更好的方法。 如果您选择扩展此类,则必须提供代码来生成Java和XML文件。 您可以选择使用您选择的技术生成这些文件。 基础IntrospectedTable类包含可以查询的org.mybatis.generator.internal.rules.Rules的实例,以确定代码生成的许多规则。 MBG提供了几个内省表的实现。 该实现是基于<context>元素的targetRuntime属性的值来选择的。 在许多情况下,扩展其中一个内置的实现将会更简单,而不是从头创建一个实现。 下表显示了内置实现:

目标运行时实现类
MyBatis3 (default)org.mybatis.generator.codegen.mybatis3.IntrospectedTableMyBatis3Impl
Ibatis2Java2org.mybatis.generator.codegen.ibatis2.IntrospectedTableIbatis2Java2Impl
Ibatis2Java5org.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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值