尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

深入 mybatis-generator-gui-extension 注解机制:@Config、@ExportToTab 与 @ExportToPlugin 源码级解析

深入 mybatis-generator-gui-extension 注解机制:@Config、@ExportToTab 与 @ExportToPlugin 源码级解析 深入 mybatis-generator-gui-extension 注解机制Config、ExportToTab 与 ExportToPlugin 源码级解析【免费下载链接】mybatis-generator-gui-extension图形化MBG内置丰富插件,可生成Service、Controller、View配置简单。 A powerful GUI tool for MyBatisGenerator(MBG)项目地址: https://gitcode.com/gh_mirrors/my/mybatis-generator-gui-extension图形化 MBG 工具mybatis-generator-gui-extension之所以能做到配置简单、开箱即用核心秘密就藏在它的注解机制里。本文将从源码级视角带你彻底搞懂Config、ExportToTab、ExportToPlugin这三个核心注解是如何把 Java 配置类翻译成可视化界面的适合想二次开发或深入理解该框架的 Java 开发者。文章配有源码路径方便你对照阅读。一、为什么说注解机制是图形化 MBG 的心脏传统 MyBatis Generator 的配置依赖繁冗的generatorConfig.xml而 mybatis-generator-gui-extension 另辟蹊径开发者只需要维护一个普通 Java 配置类用几个注解标注字段GUI 就会自动生成表单控件、自动分组成选项卡、自动把用户填写的值回填给 MBG 插件。三个核心注解各司其职注解职责一句话面向对象Config决定一个配置项长什么样控件类型、提示、校验规则表单 UIExportToTab决定配置项放在哪个选项卡、排第几界面布局ExportToPlugin决定配置项的值喂给哪个插件、用什么 key代码生成所有注解定义都集中在annotations目录下一共 8 个文件结构非常清晰。二、Config把配置项变成表单控件Config只能标注在字段上Target(ElementType.FIELD)运行时保留RUNTIME它决定了这个字段在界面中用什么控件展示。源码见 Config.java。2.1 控件类型由 ConfigType 枚举决定type属性是Config的灵魂对应 ConfigType.java 中的 10 种枚举枚举值对应控件典型用途TextField单行文本框包名、目录CheckableTextField可勾选文本框可空的高级选项TextArea多行文本框YAML 模板、文件头CheckableTextArea可勾选多行框可选的自定义导入FileChooser文件选择器选择文件DirChooser目录选择器选择项目目录CheckBox复选框开关类插件ComboBox可输入下拉框正则提示型选项ChoiceBox固定下拉框编码、Mapper 类型CheckBox布尔开关启用/停用2.2 常用属性速查bundle/label配置项名称支持 i18n 资源 keypromptText输入框占位提示helpText鼠标悬停时的 tooltip 帮助文案testRegex生成代码前的正则校验不通过会阻止生成visibleGroup可见性分组onValidateFailure校验失败时的处理。下面的真实示例来自项目核心配置类 ProjectConfig.java一个字段即可生成一个带校验的文件编码下拉框Config(bundle project.javaFileEncoding, type ConfigType.ChoiceBox, testRegex UTF-8|GBK|UTF-16BE|UTF-16LE|UTF-16|US-ASCII|ISO-8859-1) public SimpleStringProperty javaFileEncoding new SimpleStringProperty(UTF-8);注意被Config标注的字段类型必须继承自javafx.beans.property.Property这是框架读取值的硬性约定。三、ExportToTab决定配置项出现在哪个选项卡ExportToTab可以标注在类或字段上作用是给配置项分配座位——把它挂到指定名称的选项卡下并用index控制排列顺序。它使用Repeatable设计一个配置项可以同时出现在多个选项卡比如projectDir同时出现在基础配置和快捷方式里。源码见 ExportToTab.java。默认的选项卡清单定义在Constants.tabs中包括 BASIC_SETTINGS、DATA_ACCESS_OBJECT、DOMAIN_OBJECT、CACHE、COMMENT、MVC 等。ExportToTab(tabName tabs.BASIC_SETTINGS, index 1) ExportToTab(tabName SHORTCUT, index 1) Config(bundle project.projectDir, type ConfigType.DirChooser) public SimpleStringProperty projectDir new SimpleStringProperty();运行后你会看到界面被智能分组成多个选项卡这正是ExportToTab的功劳四、ExportToPlugin把配置值喂给指定插件这是三个注解中含金量最高的一个它负责把用户在界面上填写的值自动写入对应 MBG 插件的 properties 中。源码见 ExportToPlugin.java。plugin插件的全限定类名实际使用枚举DeclaredPlugins引用key写入插件配置的键名留空则默认使用字段名支持标注在类、字段、方法上——方法上的注解会调用其返回值toString()作为值遇到无法识别的类型时框架会自动调用该配置项的toString()兜底。以缓存配置为例cache_eviction等字段通过ExportToPlugin直接注入 CachePluginExportToPlugin(plugin DeclaredPlugins.CachePlugin) Config(bundle project.cache_eviction, type ConfigType.TextField) public SimpleStringProperty cache_eviction new SimpleStringProperty();五、EnablePlugin 与 AdvancedConfig两个小配角也很关键EnablePlugin当配置项的值非空且不等于 false时自动启用指定插件。典型用法是复选框勾选即启用分页插件EnablePlugin(DeclaredPlugins.PagePlugin) Config(bundle project.enablePagePlugin, type ConfigType.CheckBox) public SimpleBooleanProperty enablePagePlugin new SimpleBooleanProperty(false);源码见 EnablePlugin.java。AdvancedConfig被标注的配置项会在简洁模式下隐藏只有勾选显示高级设置才展示保持主界面清爽。源码见 AdvancedConfig.java。六、源码级解析注解是如何被消费的理解了注解定义再看框架如何读取它们你就掌握了整套机制。6.1 UI 渲染端MainController.loadExposedConfigs()入口在 MainController.java用ProjectConfig.class.getFields()反射拿到所有字段通过field.getAnnotation(Config.class)获取控件配置通过field.getAnnotationsByType(ExportToTab.class)拿到目标选项卡未标注则继承类级默认值调用ControlsFactory.getLayout()根据ConfigType工厂化生成对应 JavaFX 控件按tabName分组存入TreeMap再按index排序渲染。6.2 插件配置端MBGRunner.initPluginConfigs()入口在 MBGRunner.java遍历所有字段读取EnablePlugin值非空且非 false 就加入启用清单读取ExportToPlugin把key → value写入pluginConfigs映射key 为空时用字段名处理标注在方法上的ExportToPlugin调用方法返回值作为配置值最终在addPlugins()中把启用清单与配置项组装成 MBG 的PluginConfiguration写入生成的generatorConfig.xml。至此界面填写 → 注解映射 → 插件注入的完整链路就闭环了。七、动手实践三步给项目扩展自定义配置项如果你想给 mybatis-generator-gui-extension 扩展新功能只需三步新建字段在ProjectConfig中声明SimpleStringProperty类型字段标注注解按需叠加Config控件样式ExportToTab放哪个页签ExportToPlugin喂给哪个插件EnablePlugin勾选即启用编写插件实现 MBG 的PluginAdapter可参考内置的 PagePlugin.java在initPluginConfigs阶段框架会自动完成值注入。八、总结mybatis-generator-gui-extension 用一套轻量的注解机制把配置文件、界面表单、代码插件三者解耦并自动串联Config管呈现、ExportToTab管布局、ExportToPlugin管数据流转。理解这三个注解就等于拿到了这个图形化 MBG 工具的使用说明书 二次开发指南。想动手体验直接 clone 仓库后阅读ProjectConfig.java与annotations目录源码是最好的老师。【免费下载链接】mybatis-generator-gui-extension图形化MBG内置丰富插件,可生成Service、Controller、View配置简单。 A powerful GUI tool for MyBatisGenerator(MBG)项目地址: https://gitcode.com/gh_mirrors/my/mybatis-generator-gui-extension创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表