转载

MyBatis Generator (一)

MyBatis生成器介绍

MyBatis生成器(MBG)是MyBatis MyBatis的一个代码生成器。它将为所有版本的MyBatis生成代码。它将内省一个数据库表(或多个表),并生成可用于访问表的工件。这减少了设置对象和配置文件以与数据库表交互的初始麻烦。MBG试图对大部分简单的CRUD(创建、检索、更新、删除)数据库操作产生重大影响。您仍然需要为join查询或存储过程手工编写SQL和对象代码。

MBG以不同的风格为不同的语言生成代码,这取决于它是如何配置的。例如,MBG可以生成Java或Kotlin代码。而且MBG可以生成兼容MyBatis3的XML——尽管这现在被认为是MBG的遗留用法。新生成的代码样式不需要XML。

根据MyBatis Generator的配置,它可以生成:

一、匹配表结构的Java或Kotlin类。这可能包括:

  • 匹配表主键的类(如果有主键)
  • 匹配表的非主键字段的类(BLOB字段除外)
  • 一个包含表的BLOB字段的类(如果表有BLOB字段)
  • 启用动态选择、更新和删除的类

这些类之间存在一种适当的继承关系。注意,可以将生成器配置为生成不同类型的POJO层次结构——例如,如果需要,可以选择为每个表生成单个域对象。

二、在某些情况下,MBG将生成MyBatis3兼容的SQL Map XML文件。MBG为配置中的每个表上的简单CRUD函数生成SQL。生成的SQL语句包括:

  • 插入
  • 按主键更新
  • 通过示例进行更新(使用一个动态where子句)
  • 按主键删除
  • 通过示例删除(使用一个动态where子句)
  • 按主键选择
  • 通过示例选择(使用一个动态where子句)
  • 计算实例

根据表的结构,这些语句有不同的变体(例如,如果表没有主键,那么MBG将不会通过主键函数生成更新)。

三、适当使用上述对象的Java或Kotlin客户端类、接口和Kotlin扩展方法。客户端类的生成是可选的。MBG将生成一个与MyBatis 3.x一起工作的mapper接口。

MyBatis生成器设计为在迭代开发环境中良好运行,可以作为Ant任务或Maven插件包含在持续构建环境中。在迭代运行MBG时需要注意的重要事项包括:

  1. 如果存在与新生成的XML文件同名的现有文件,MBG将自动合并XML文件。MBG不会覆盖对生成的XML文件所做的任何自定义更改。您可以一遍又一遍地运行它,而不用担心丢失对XML的定制更改。MBG将替换在前一次运行中生成的所有XML元素。
  2. MBG不会合并Java文件,它既可以覆盖现有文件,也可以用不同的唯一名称保存新生成的文件。如果对生成的Java文件进行更改并迭代地运行MBG,则必须手工合并这些更改。当作为Eclipse插件运行时,MBG可以自动合并Java文件。
  3. MBG不会合并Kotlin文件,它既可以覆盖现有文件,也可以用不同的唯一名称保存新生成的文件。如果对生成的Kotlin文件进行更改并迭代地运行MBG,则必须手工合并这些更改。

与Eclipse运行

当作为Eclipse特性运行时,生成器还可以合并Java文件并将用户修改保存到生成的Java文件中。生成器使用Eclipse Java解析器和AST walker来完成此任务。Eclipse特性还对用户界面进行了一些增强,使生成器更容易运行。最后,Eclipse特性为Eclipse帮助系统提供了生成器的完整用户手册。

Eclipse特性可以在Eclipse市场上找到: https://marketplace.eclipse.o... 。

依赖关系

除了JRE之外,MBG没有其他依赖项。要求Java 8或以上。此外,还需要实现DatabaseMetaData接口的JDBC驱动程序,特别是getColumns和getPrimaryKeys方法。

支持

对MyBatis生成器的支持是通过MyBatis用户邮件列表提供的。你可在此透过谷歌编号订阅或浏览邮寄名单:

http://groups.google.com/grou...

如果您认为您已经发现了一个bug,请在创建新票证之前,首先在用户列表中询问有关它的问题。如果你发现了一个bug,或者有了一个新的功能请求,你可以在GitHub上打开一个新的问题:

https://github.com/mybatis/ge...

原文  https://segmentfault.com/a/1190000022589057
正文到此结束
Loading...