MyBatis Generator中的新功能

来源:互联网 发布:下载qq软件2016 编辑:程序博客网 时间:2024/05/16 17:00

版本1.3.5

请参阅GitHub页面的里程碑1.3.5,了解本版本中发生了什么变化。里程碑1.3.5

版本1.3.4

在这个版本中,我们已经弃用了eclipse插件中的弹出菜单项,用于运行MyBatis生成器,它将在下一个版本中被删除。替换是一个新的MyBatis生成器启动器,具有比弹出菜单项更多的功能。请参阅GitHub页面里程碑1.3.4,以了解本版本中发生了什么变化。里程碑1.3.4

版本1.3.3

通告MyBatis Generator现在需要1.6或更高的JRE修复/增强有关这个版本中发生了什么变化的详细信息,请参考GitHub页面的里程碑1.3.3。

里程碑1.3.3

版本1.3.2

修复的 bug
将注释添加到模型类中生成的构造函数, 以便可以合并它们。
支持带有大写元素的包名称。
固定问题 #288-不正确标注的 countByExample 方法
修正了 Maven 插件, 因此 <properties> 文件可以在项目类路径中找到。
固定问题 #359-使 JdbcTypeInformation 公开
固定上下文. toXmlElement () 方法以包含缺少的属性
固定 CaseInsensitiveLikePlugin 添加新方法 GeneratedCriteria 内部类
问题 #412-更新文档以反映 MyBatis3 有关生成密钥的差异。
问题 #440-为具有类型处理程序的基元生成不正确的代码
问题 #439-在适当的时候使用自动装箱作为基元
问题 #438-在数据库序列中保留主键属性
问题 #507-RowBounds 插件生成重复语句
问题 #593-CaseInsensitiveLikePlugin 跳过 Jdbc4 国家字符类型
增强
添加了一个新的目标运行时-MyBatis3Simple-可用于在表上生成非常简单的 CRUD 操作。此运行时比正常的 MyBatis3 运行时生成更简单的 MyBatis 代码。生成的代码还具有正常 MyBatis3 运行时的较低功能。如果不定期使用 "按示例" 方法, 则 MyBatis3Siple 运行时生成的代码可能更适合您的项目。
添加了一个新的插件-VirtualPrimaryKey 插件-可用于指定充当主键的列, 即使它们未定义为数据库中的主键。
问题 #328-添加了一个新的插件-RowBounds 插件-这将产生一个附加版本的 selectByExample, 支持 MyBatis RowBounds 功能。
为提供的插件创建了一个新的参考页: 提供的插件
只允许生成 Java 模型的问题 #368。如果在上下文中未指定 SQLMapGenerator 或 JavaClientGenerator, 则只生成 Java 模型。此外, 如果属性 "modelOnly" 在 <table> 元素上设置为 "true", 则将只生成模型对象和可能的 XML 结果映射。
问题 #374-允许为在文件系统上读写 Java 文件指定文件编码。<context> 元素上有一个新的属性 "javaFileEncoding", 可用于指定 Java 文件编码。(XML 文件总是按规范的 UTF-8 读/写)。
添加了为生成的 Java 和 XML 文件指定自定义代码格式化程序的功能。有关更多信息, 请参见 <context> 元素上的新属性。
增加了对 varargs org.mybatis.generator.api.dom.java.Parameter 类的支持
增加了对同步和本机 org.mybatis.generator.api.dom.java.Method 类的支持
增加了对 org.mybatis.generator.api.dom.java.Field 类的瞬态和挥发性的支持
问题 #375-添加了一个新的插件-ToStringPlugin-将在模型类中生成 toString () 方法。感谢田中岩!
向可序列化插件发出 #233 的 GWT 功能
问题 #564-支持子在表级别
问题 #590-新的插件 <cache>。谢谢你, 杰森. 贝内特!

版本1.3.1

修复的 bug
始终指定 <selectKey> 在 <insert> 中 MyBatis3 位置的顺序不相关。
XMLMAPPER 客户端忽略了 "rootInterface"
当将小写类名指定为域对象名称时修复 bug
固定问题 #174-selectByExampleWithBlobs 中 order 子句格式不正确
增强
添加了一个新的 MyBatis3 生成器, 它仅基于没有生成的 XML 的注释生成代码。此新生成器的配置设置如下:
<context> 元素的 targetRuntime 属性是 MyBatis3
<javaClientGenerator> 元素的类型属性为 ANNOTATEDMAPPER
添加了一个新的 MyBatis3 生成器, 它根据注释和生成的 XML 的混合生成代码。此新生成器的配置设置如下:
<context> 元素的 targetRuntime 属性是 MyBatis3
<javaClientGenerator> 元素的类型属性为 MIXEDMAPPER
添加对 JDBC 类型的支持 NCHAR、NCLOB、NVARCHAR 以匹配 MyBatis3。
增加了对 MyBatis3 "useGeneratedKeys" 的支持。有关详细信息, 请参见 <generatedKey>。
在 MyBatis3 中添加了对不可变对象和基于构造函数的结果映射的支持。有关详细信息, 请参见 <table> 和/或 <javaModelGenerator>。
增加了对 Java DOM 中初始化块的支持
问题 #214-添加了在生成的代码中抑制所有注释的功能。有关详细信息, 请参见 <commentGenerator>。

版本1.3.0

移动到mybatis.org,重命名为MyBatis GeneratorMyBatis生成器将继续支持Ibator的XML配置文件。但是,任何新功能只能在MyBatis格式化的配置文件中实现。将Ibator格式的配置文件迁移到MyBatis Generator的新DTD需要进行一些最小的更改。MyBatis 3的配置设置如下:<context>元素的targetRuntime属性必须更改为MyBatis3必须将<javaClientGenerator>元素的type属性更改为XMLMAPPER删除了在<context>元素中的suppressTypeWarnings属性的支持。由于不同编译器中的@SuppressWarnings(“unchecked”)和@SuppressWarnings(“rawtypes”)之间的混淆,这种令人困惑的财产变得无法管理。这仅用于使用Ibatis2Java2 targetRuntime生成的代码将使用JSE 5.0编译器进行编译的角落。

版本1.2.2(永不发布)

通告org.apache.ibatis.ibator.api.CommentGenerator接口已更改。必须更改实现此接口的类。通过这种改变,实现类可以访问更多的数据元素来生成注释。此外,此更改使得注释生成器接口与其他公共Ibator接口更加一致。更改细节如下:接受参数FullyQualifiedTable的方法现在接受参数IntrospectedTable。FullyQualifiedTable实例可通过IntrospectedTable.getFullyQualifiedTable()方法获得。接受String参数columnName的方法现在接受参数IntrospectedColumn。列名可通过IntrospectedColumn.getActualColumnName()方法获得。重要注意事项:对于Ibator提供的类DefaultCommentGenerator,任何实现子类都不需要立即更改。旧的方法已被弃用,并将在下一个版本的Ibator中删除 - 所以子类应尽快重新加工。SQL Map生成器已更改,因为它不再为每个生成的XML标识符添加字符串“ibatorgenerated_”。如果您在其他代码中依赖这些生成的名称,可以强制Ibator在<SqlMapGenerator>配置中使用propertyLegacyXMLIds的属性预先添加字符串。

Ibator现在用Maven构建,并包含一个Maven插件。修复的 bug
当没有 DAOs 生成时。
IBATIS-579-不允许包含空格的列名称在生成的 XML 中跨行进行分隔。
固定的北角和不正确的计算在生成的 equals 方法 (从 EqualsHashCodePlugin) 当某些字段是 null-感谢本杰明 Klatt 找到这个 bug。
IBATIS-601-不正确的 <generatedKey> 验证
IBATIS-609-对 Java 泛型类型的错误解析
固定拼写错误 LONCVARCHAR 到 LONGVARCHAR (感谢阿拉德)
固定 IBATIS-731-更改主键变量的名称以避免冲突
固定 IBATIS-699-覆盖 unmergeable 的 XML 文件 (如果启用)
固定的问题, 如果有一个序列生成主键 (仅问题与 iBATIS3), insertSelective 失败
增强
IBATIS-569 修改了 IbatorRules 实现, 使插件更容易提供 IbatorRules 的自定义实现。有关更多信息, 请参见新类 org.apache.ibatis.ibator.internal.rules.IbatorRulesDelegate 的 Javadoc。
如果在表中用作列名, 则 IBATIS-571 添加了对 SQL 关键字的自动分隔的支持。有关详细信息, 请参阅 <ibatorContext> 页面。
IBATIS-577-为列列表定义 SQL 片段, 以提高生成的代码的可重用性。多亏了田中岩大道!的想法和初始补丁。
添加了新的详细命令行参数。有关详细信息, 请参阅正在运行的 Ibator 页。
添加了在调试中使用的日志记录语句。有关详细信息, 请参阅日志记录页。
添加了新的示例插件, 以演示添加不区分大小写 (如支持生成的示例类)。有关详细信息, 请参阅 <ibatorPlugin> 页面。
已将 "delimitAllColumns" 属性添加到表配置中。这支持对标识符区分大小写的数据库 (如 PosgreSQL)。有关详细信息, 请参阅 <table> 页面。
添加了一页说明如何处理 PostgreSQL 中的区分大小写。有关详细信息, 请参阅 PostgreSQL 页。
IBATIS-586-添加了在 columnOverrides 上指定嵌套属性元素的功能。有关详细信息, 请参阅 <columnOverride> 页面。感谢丹 Turkenkopf 的想法和一个不错的初始补丁。
IntrospectedColumn 类现在包含在数据库内省过程中返回的任何列注释。这可能对某些 CommentGenerators 有用。
IBATIS-592 添加了包含计算的 SqlMap 命名空间和计算的运行时表名称的 IntrospectedTable 的属性。现在可以在插件中重写这些。
固定 addCriterionfor JDBC * 方法, 使他们都做一个空检查。
固定 IbatorRunner, 以便显示配置错误 (感谢您的排名)
为 <generatedKey> 添加 IBATIS-605 的 Informix 方言
Addedd 支持 "不同" 选择的示例方法
添加新 "或" 方法到示例类
在 <table> 上添加了新的 "useCompoundPropertyNames" 属性
为扩展示例类启用了更简单的方法
EqualsHashCodePlugin 现在产生了远远优越的方法

版本1.2.1

修复的错误修复了IbatorObjectFactory,因此它将从上下文类加载器中找到内部类。修复了IBATIS-565 - 在SqlMapConfigPlugin中形成错误的注释增强功能改进的模型字段,getter和setter的插件方法,以便插件可以知道正在生成哪个类(主键,基本记录或使用BLOB记录)的类型。添加了IntrospectedTable获取/设置属性的方法。这允许插件类在插件调用之间维护基于表的状态。向插件API添加已初始化的方法。这允许插件改变一些基本代码生成项目(例如生成的类的名称)。添加了一个示例插件来显示初始化方法的用法。

版本1.2.0

通告使用版本1.2,Abator更名为Apache iBATIS Ibator。对XML配置以及Java API进行了一些更改。有关现有Abator配置文件所需更改的详细信息,请参阅从Abator迁移页面。修复的错误修复了JavaTypeResolver,使得不支持的数据类型的列可能被配置覆盖。修复了IBATIS-523 - EqualsHashCodePlugin的预发行版本中的错误固定IBATIS-542 - 将版本升级到Ant版本1.7.1增强功能Ibator现在包括一个插件机制。此机制可用于添加或修改由Ibator生成的代码。如果您以前已经扩展了Abator的一个代码生成器来改变他们的行为,我们强烈建议您移动到一个插件。有关详细信息,请参阅<ibatorPlugin>页面。Ibator装有以下插件:一个将生成SQL Map配置文件的插件(org.apache.ibatis.ibator.plugins.SqlMapConfigPlugin)一个插件可以使生成的模型类Serializable(org.apache.ibatis.ibator.plugins.SerializablePlugin)一个插件,将equals和hashCode方法添加到生成的模型类(org.apache.ibatis.ibator.plugins.EqualsHashCodePlugin)增加了对<table>配置元素的“runtimeCatalog”和“runtimeSchema”属性的支持。感谢Dan Turkenkopf的想法和补丁!新生成的方法 - insertSelective。此方法将允许您在insert上的表定义上使用列默认值添加了指定一个DAO实现类的能力与DAO接口类在一个单独的包中。Abator的变化Ibator和Abator之间有几个突破性的变化。此列表详细说明了更改,并具有解决差异的方法。Ibator需要JSE 5.0或更高版本Ibator不包含Abator的“遗留”代码生成器。您必须选择“Ibatis2Java2”或“Ibatis2Java5”作为目标运行时 - 并且从Ibator生成的代码仅与iBATIS版本2.2.0或更高版本兼容。如果您使用的是早期版本的iBATIS - 升级!如果您无法升级,那么您必须继续使用Abator。Ibator中的加载策略从Abator更改。在所有情况下,我们现在建议在Ibator外部指定类路径,我们进一步建议您不要使用<classPathEntry>元素。您可以指定classpath条目,如果您觉得您必须,但这些条目将仅在加载Java模型根类的JDBC驱动程序时使用。如果您为Ibator或插件编写自定义扩展,则必须在Ibator外部指定该类路径条目。Abator扩展的API显着改变。在大多数情况下,旧的Abator接口的实现应该转换为Ibator插件。有关更多信息,请参阅扩展Ibator。afterXXXGenerationHook方法已从所有Ibator提供的核心接口实现中删除。如果您扩展了Ibator提供的实现以使用这些方法,那么您必须将代码迁移到Ibator插件。该版本已经大大修改,现在包括基于Emma的代码覆盖率报告。需要更改XML配置文件。有关详细信息,请参阅从Abator迁移页面。

版本1.1.0

通告下一个版本的Abator将需要JRE 5.0或更高版本。Java2现在是默认的生成器集。如果您以前没有指定生成器组,则会导致生成不同的代码。要解决这个问题,请将发电机组设置为“旧”。新生成的方法Abator将产生这些新方法:countByExample此方法将返回一个整数,表示与给定条件匹配的表中的行数。updateByExample此方法将更新表中匹配给定条件的所有行。此方法仅在Java2和Java5生成器集中可用。还有一个“选择性”版本的方法,只更新表的某些列(这种方法的选择性版本可能是在大多数情况下使用的更有用的版本)。已修复的错误修正了创建条件类的角落的错误,但没有设置条件。修复了导致JavaModelGenerator的“trimStrings”属性失败的错误修复了XML文件合并,使内部实体被保留修复了XML配置解析器,以便正确处理外部实体修正了错误 - JDBC BIT数据类型的不正确的数据类型映射修正了Abator为某些数据库列生成错误属性的错误(例如,如果列名称为I_NAME)杂项更改
添加了指定属性以忽略限定符并更改表的生成 SQL 中的运行时表名称的功能。此支持的主要用例包括:
为具有公共同义词或别名的表生成对象
为存在于多个架构中的表生成对象, 并且将在运行时选择架构
有关详细信息, 请参见 <table> 参考页, 或者查看示例的 Oracle 参考页。
添加了对标识符包含空格或 sql 保留字的用例的分隔 SQL 标识符的支持。有关更多信息, 请参见 <table>、<abatorContext> 和 <columnOverride> 参考页。
已为生成的密钥添加了 SYBASE 方言。有关详细信息, 请参阅 <generatedKey> 参考页。
添加 DB2_MF (DB2 在主框架) 方言为生成的键。有关详细信息, 请参阅 <generatedKey> 参考页。
Abator 现在将自动转义包含 $ 或 # 字符的标识符, 因为这些字符在 iBATIS 配置文件中具有特殊含义。
为生成的示例类 (仅在 Java2 和 Java5 生成器集中) 添加了一个明确的方法。这允许重用这些类。
增加了指定结果映射应使用列索引而不是结果映射中的列名的功能。此支持的主要用例包括:
当表的名称仅按大小写区分的列 (例如, "名字" 和 "名字")
当您希望尽可能快地进行选择时 (使用列索引时有轻微的性能优势)
有关详细信息, 请参阅 <table> 参考页。
使生成的示例和条件类可扩展。添加了一些有关如何扩展这些类的文档。有关详细信息, 请参阅扩展示例类参考页。
使遗留 DAOs 可扩展。
添加了为列提供重命名规则的功能。这是用于在计算属性名称之前, 列具有应删除的通用前缀的用例。有关详细信息, 请参阅 <columnRenamingRule> 参考页。
增加了对 XML 的持续配置的支持-这将在将来启用图形编辑器。
在所有生成器中添加 afterXXXGenerationHook () 方法, 以便能够将额外的 Java 代码或 XML 元素添加到任何产生的对象中。这将使创建自定义生成器变得更容易。
API 更改以允许使用选定的上下文而不是整个配置文件生成。
API 更改以允许使用选定的表而不是整个配置文件生成。
公开了对命令行和 Ant 任务选择表和/或上下文的新支持-这为 Abator 的命令行添加了高级语法。有关详细信息, 请参阅正在运行的 Abator 参考页。
现在可以为每个表指定 rootClass 和 rootInterface。有关详细信息, 请参阅 <table> 参考页。
如果为任何表指定了 rootClass, 则 Abator 现在将在 rootClass 中签入, 以查看根类中是否已存在生成的属性。如果有, Abator 将不会生成该属性。<javaModelGenerator> 元素现在接受一个属性来指定 rootClass 的类路径。有关详细信息, 请参阅 <javaModelGenerator> 参考页。感谢 Ashok 马达范这段代码的开端。
允许为生成的键元素指定类型 (pre 或 post)。有关详细信息, 请参阅 <generatedKey> 参考页。
添加了一个注释生成器接口, 以便生成自定义注释。有关详细信息, 请参阅 <commentGenerator> 参考页。

版本1.0.0

生成器集生成器集是一组代码生成器(SQL Map Generator,Java Model Generator,DAO Generator和Java Type Resolver)。Abator现在装载三台不同的生成器集来自这三个生成器集的生成代码略有不同,生成的对象的使用也略有不同。这些概念是完全一样的。对于较新的生成器集,“示例”方法已经大大改善。现在可以生成几乎任何WHERE子句(包括IN和BETWEEN谓词)。最后,新的生成器集生成更简洁的代码 - DAO和SQL映射是正常大小的,没有任何外部的方法。新生成器集合中的示例类封装了生成动态查询所需的所有功能。Abator附带的三个生成器集如下:遗产该生成器集生成与以前版本的Abator相同的代码。这个生成器集有一些限制,我们强烈建议您选择其他组合。但是,这个集合现在仍然是默认值。这个生成器集很可能在以后的Abator版本中被删除。Java2该生成器集生成与iBATIS版本2.2.0及更高版本兼容的代码。使用此生成器设置“按示例”方法比传统集中的功能要强大得多。现在可以使用Abator生成的代码(包括“IN”和“BETWEEN”子句)生成几乎无限的SQL WHERE子句。这个发生器组可能会在以后的Abator版本中成为默认设置。Java5该发生器集具有与Java2生成器集相同的功能,具有使用参数化类型和注释生成符合JSE 5.0标准的代码的附加功能。重要提示:使用Java2或Java5生成器集生成的代码与使用Legacy集生成的代码并不是100%兼容 - 特别是在使用“by example”方法时。另请注意,这些生成器集合中的“按示例”方法依赖于版本2.2.0之前的iBATIS版本中缺少的iBATIS动态SQL支持。使用<abatorContext>元素的generatorSet属性选择生成器集。有关详细信息,请参阅<abatorContext>参考页面。示例类的使用与不同的发生器集不同。有关详细信息,请参阅“用例示例”页面。

模型类型

模型类型用于更好地控制由Abator生成的域对象的类型。Abator现在支持三种不同类型的域模型,如下所示:有条件的该模型类似于层次模型,只是如果该单独的类只包含一个字段,则不会生成单独的类。因此,如果表只有一个主键字段,则该字段将被合并到基本记录类中。此模型类型是默认值。请注意,该模型类型可能会生成与以前版本的Abator中生成的类不是100%的类。平面此模型仅为任何表生成一个域类。该类将保存表中的所有字段。分级该型号与Abator初始版本一起提供。如果表具有主键,另一个类保存表中的任何BLOB列,另一个类保存其余字段,则此模型将生成主键类。类之间有一个适当的继承关系。可以将模型类型指定为整个上下文的默认值,并且可以覆盖上下文中每个表的默认值。有关设置上下文默认值的更多信息,请参阅<abatorContext>参考页面。有关为特定表格设置模型类型的更多信息,请参阅<table>参考页面。重要提示:默认值为条件 - 这是与以前版本的Abator不兼容的更改。updateByPrimaryKeySelective这是一个新映射的SQL语句和新的DAO方法,它只会更新参数类中对应属性不为空的列。这可以用于更新记录中的某些列,而不需要更新整个记录。要点:映射到原始类型的任何列将始终被更新。杂项变更增加了指定表别名的功能。这有助于重用生成的SQL映射元素。修复了XML文件合并,以便删除文件末尾的无关空白行。增加了为表列指定类型处理程序的能力。有关详细信息,请参阅<columnOverride>参考页面。添加了通过示例“方法”指定DAO的可见性的功能。这允许您将方法设置为仅供内部使用。增加了覆盖DAO方法名称的命名约定的能力。有关更多信息,请参阅<javaClientGenerator>参考页面。添加了在表配置中为模式或表名指定通配符的功能。这将允许使用简单的XML配置生成许多表。添加了在驱动程序需要时在模式或表名中转义通配符的功能。有关详细信息,请参阅<table>参考页。如果您在JSE 5.0环境中使用Legacy或Java2生成器集,则增加了禁止非参数化类型的JSE 5.0类型警告消息的功能。有关详细信息,请参阅<abatorContext>参考页面。添加了指定用于将参数传递到Abator配置文件(如iBATIS属性文件)的外部属性文件的功能。有关详细信息,请参阅<properties>参考页面。Ant任务现在支持一个“详细”属性。有关详细信息,请参阅运行Abator页面。Ant任务现在支持将值传递到Abator配置文件中的嵌套属性集。有关详细信息,请参阅运行Abator页面。
原文:What's New in MyBatis Generator

相关阅读:

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

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

MyBatis Generator XML 配置文件参考

运行 MyBatis Generator 后的任务

运行MyBatis Generator

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


原创粉丝点击