MyBatis Generator配置文件context元素的defaultModelType属性

MyBatis Generator配置文件context元素的defaultModelType属性 

MyBatis Generator配置文件context元素有一个defaultModelType属性,这个属性的值会影响实体类(或叫domain类,model类)的生成。  
  
这个属性用于设置产生的模型类型。模型类型定义了MBG如何去产生模型类。对于一些模型类型,MBG会为每一张表产生单独的实体类,而其他的模型类型,MBG会依据表的结构产生一些不同的实体类 
这个属性支持以下三个值:  
  
conditional  
这是默认值  
这个模型与hierarchical模型相似,除了如果一个实体类只包含一个字段,则不会单独生成此实体类。因此,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,会将该字段合并到基本实体类中
  
flat  
该模型为每一张表只生成一个实体类。这个实体类包含表中的所有字段。一般使用这个模型就够了。  
  
hierarchical  
如果表有主键,那么该模型会产生一个单独的主键实体类,如果表还有BLOB字段,则会为表生成一个包含所有BLOB字段的单独的实体类,然后为所有其他的字段生成一个单独的实体类。MBG会在所有生成的实体类之间维护一个继承关系  
显然这个模型比较复杂。  
IntrospectedTable中的rules属性(接口Rules)中有三个方法:
  generatePrimaryKeyClass()
  generateBaseRecordClass()
  generateRecordWithBLOBsClass()控制是否生成三种Model文件。
mybatis提供了三种ModelType: HIERARCHICAL("hierarchical")、FLAT("flat"),CONDITIONAL("conditional");
对应三种modelRule:HierarchicalModelRules、FlatModelRules、ConditionalModelRules。
通过在mybatis generator配置文件增加属性defaultModelType=“hierarchical”可以控制不生成PrimarykeyClass。
这种配置会导致只包含联合主键的表不能生成Model,可以通过修改HierarchicalModelRules方法中的generateBaseRecordClass()改为返回true,则可生成对应Model
原文地址:https://www.cnblogs.com/liaojie970/p/8029000.html