ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
# JAVA实体对象 MyBatis Generator (MBG)根据数据库表字段生成Java类. MBG生成的是简单实体对象而非带业务逻辑的实体对象(详见[设计理念](../philosophy.html)介绍).MBG根据表特性和配置生成不同类型的实体对象. MBG生成字段和方法时包含JavaDoc标签 `@mbggenerated`.运行Eclipse插件时,MBG会将每个Java对象中的JavaDoc标签删除或替换.其他地方不会发生变化. 在这种情况下,您在Java类中添加的字段和方法就不用担心丢失--不包括包含了JavaDoc`@mbggenerated`标签部分内容. 离开Eclipse插件,您需要手动合并Java文件,但是使用JavaDoc的`@mbggenerated`标签用来了解删除以前版本的文件是否安全. 以下描述生成不同的实体对象.MBG根据[<context>](../configreference/context.html)的`defaultModelType`属性(支持conditional、flat、hierarchical三个值)和[<table>](../configreference/table.html)的`modelType`(此属性用于覆盖默认的defaultModelType)属性配置生成不同的实体对象. 任何字段配置了[<ignoreColumn>](../configreference/ignoreColumn.html),自动生成时不会添加到Java对象中. 注意: 下面描述中"BLOB"指任何列的BLOB数据类型包括BLOB, CLOB, LONGVARCHAR, 和 LONGVARBINARY. ## 主键类 主键类在表中包含一个主键的字段属性. (MBG)根据表列明自动生成属性名称.自动生成的属性名称可以配置`<columnOverride>`属性覆盖. 类名默认情况是`?TableName?Key`,如果`<table>`配置了`domainObjectName`属性那么类名是`?domainObjectName?Key`. 如果表中存在一个字段的主键将会生成hierarchical类型实体对象. 如果表中存在多列组合主键将会生成conditional类型实体对象.主键类是不会生成flat类型实体对象 model. ## 记录类 主键类在表中不包含主键、BLOB的字段属性. 如果只有一个主键记录类将继承主键类. (MBG)根据表列明自动生成属性名称.自动生成的属性名称可以配置`<columnOverride>`属性覆盖. 类名默认情况是`?TableName?`,如果`<table>`配置了`domainObjectName`属性那么类名是`?domainObjectName?`配置的值. 如果表中不存在组合主键、BLOB列将生成hierarchical类型实体对象.如果表中不存一个字段的主键、BLOB列或只有一个主键或者一个BLOB列将生成conditional类型实体对象.记录类常常生成flat类型实体对象. ## BLOB记录类 BLOB记录类在表中包含BLOB字段属性. 如果表中只存在一个字段该类将继承基础类, 或将继承主键类(注意:MBG不支持表中只包含BLBO列). (MBG)根据表列明自动生成属性名称.自动生成的属性名称可以配置`<columnOverride>`属性覆盖. BLOB记录类调用`selectByPrimaryKey`或`selectByExampleWithBLOBs`方法返回BLOB字段值. 类名默认情况是`?TableName?WithBLOBs`,如果`<table>`配置了`domainObjectName`属性那么类名是`?domainObjectName?WithBLOBs`. 如果表中存在一个BLOB列将生成hierarchical类型实体对象. 如果表中存在多个BLOB列将生成conditional类型实体对象.BLOB记录类是不会生成flat类型实体对象. ## Example类 Example类用来处理MBG动态查询功能. Example类设置条件用于动态WHERE子句下列方法中: * `selectByExample` * `selectByExampleWithBLOBs` * `deleteByExample` * `countByExample` * `updateByExample` Example类不继承任何实体对象. 类名默认情况是`?TableName?Example`,如果`<table>`配置了`domainObjectName`属性那么类名是`?domainObjectName?Example`. 如果方法被启动Example类将生成任何`*ByExample`方法.注意:如果表中有非常多的字段该类可能很大,但 DAO生成的XML是比较小的. 如果您不需要使用动态WHERE子句,您可以禁用生成这些方法. 详见[Example类使用说明](exampleClassUsage.html)了解详情.