JAVA实体对象
MyBatis Generator (MBG)根据数据库表字段生成Java类. MBG生成的是简单实体对象而非带业务逻辑的实体对象(详见设计理念介绍).MBG根据表特性和配置生成不同类型的实体对象.
MBG生成字段和方法时包含JavaDoc标签 @mbggenerated
.运行Eclipse插件时,MBG会将每个Java对象中的JavaDoc标签删除或替换.其他地方不会发生变化. 在这种情况下,您在Java类中添加的字段和方法就不用担心丢失--不包括包含了JavaDoc@mbggenerated
标签部分内容.
离开Eclipse插件,您需要手动合并Java文件,但是使用JavaDoc的@mbggenerated
标签用来了解删除以前版本的文件是否安全.
以下描述生成不同的实体对象.MBG根据<context>的defaultModelType
属性(支持conditional、flat、hierarchical三个值)和<table>的modelType
(此属性用于覆盖默认的defaultModelType)属性配置生成不同的实体对象.
任何字段配置了<ignoreColumn>,自动生成时不会添加到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类使用说明了解详情.