MyBatis Generator逆向生成table的model type



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

猜你喜欢

转载自blog.csdn.net/qq_33223299/article/details/80911351