实现插件
插件可用于修改或添加到MyBatis Generator生成的对象。插件必须实现接口org.mybatis.generator.api.Plugin。插件接口包含许多在代码生成过程的不同阶段调用的方法。对于任何特定的插件,通常不需要实现整个接口。因此,大多数插件都应该扩展适配器类org.mybatis.generator.api.PluginAdapter。适配器类提供基本的插件支持,并为大多数接口方法(类似于Swing适配器类)实现无操作方法。MyBatis Generator提供了几个插件(都在包org.mybatis.generator.plugins中)。提供的插件演示了可以使用插件完成的不同类型的任务。插件的源代码随下载提供,也可以在线查看。插件生命周期
插件具有生命周期。在代码生成过程的初始化过程中创建插件,并按顺序调用进程的不同阶段。以下列表显示了插件的基本生命周期:通过默认构造函数创建的插件setContext方法调用setProperties方法调用验证方法调用。如果此方法返回false,那么插件中没有其他方法将被调用对于配置中的每个表:初始化方法调用Java客户端方法:1,2clientXXXMethodGenerated(Method,TopLevelClass,IntrospectedTable) - 这些方法被调用,因为生成了Java客户端实现类的每个方法。clientXXXMethodGenerated(Method,Interface,IntrospectedTable) - 这些方法被调用,因为生成了每个Java客户端接口的方法。clientGenerated(Interface,TopLevelClass,IntrospectedTable)方法调用模型方法:1modelFieldGenerated,modelGetterMethodGenerated,modelSetterMethod为类中的每个字段生成modelExampleClassGenerated(TopLevelClass,IntrospectedTable)modelPrimaryKeyClassGenerated(TopLevelClass,IntrospectedTable)modelBaseRecordClassGenerated(TopLevelClass,IntrospectedTable)modelRecordWithBLOBsClassGenerated(TopLevelClass,IntrospectedTable)SQL Map方法:1sqlMapXXXElementGenerated(XmlElement,IntrospectedTable) - 这些方法被调用,因为SQL映射的每个元素都被生成sqlMapDocumentGenerated(Document,IntrospectedTable)sqlMapDocument(GeneratedXmlFile,IntrospectedTable)contextGenerateAdditionalJavaFiles(IntrospectedTable)方法调用contextGenerateAdditionalXmlFiles(IntrospectedTable)方法调用contextGenerateAdditionalJavaFiles()方法调用contextGenerateAdditionalXmlFiles()方法调用提示:1 - 这些方法将被封装的代码生成器调用。如果您提供自定义代码生成器,则只有在自定义代码生成器调用它们时才会调用这些方法。2 - Java客户端方法只会被调用是一个Java客户端生成器被配置。编写插件
实现插件的最佳方式是扩展org.mybatis.generator.api.PluginAdapter类,并仅覆盖插件中需要的特定方法。插件接口中的方法可用于修改默认生成的代码,或添加其他生成的代码。使用插件可以完成的事情的例子有:将自定义注释添加到生成的方法向生成的类添加其他方法向生成的XML文件添加其他元素生成其他Java文件生成其他XML文件将始终调用contextXXX方法。其他方法由打包的代码生成器调用,只有当表的规则将导致生成特定元素时。例如,如果表没有主键,则不会调用modelPrimaryKeyClassGenerated(TopLevelClass,IntrospectedTable)方法。返回布尔值的方法可用于绕过代码生成。如果这些方法中的任何一个返回false,那么相关项将不会添加到生成的代码中。如果配置了多个插件,则从方法返回false的第一个插件将导致MyBatis Generator在所有其他插件中停止调用该方法。如果您有一个插件的想法,请随时在用户列表中提出有关问题。我们来帮忙!
原文:Implementing Plugins
相关阅读:
MyBatis Generator (MBG) 代码生成器简介
MyBatis Generator 代码生成器 快速入门指南
SSM框架——使用 MyBatis Generator 生成代码,包括:Model、Dao、Mapping
提供的插件