十二、实体代码生成器

十二、实体代码生成器

这里借鉴mybatis的实体生成器想法,根据jdbc中数据库字段和java类的映射,来生成对应的实体,我们这里有别于mybatis,对一些枚举类型做了特殊处理,对于公共的一些枚举类型,这里及进行抽离了出来。我们首先看下怎么生成实体。

@Test
public void test1(){
  EntityCodeGen codeGen = new EntityCodeGen()
    // 数据库信息
        .setDb("neo_test", "neo@Test123", "jdbc:mysql://127.0.0.1:3306/neo?useUnicode=true&characterEncoding=UTF-8&useSSL=false")
    // 设置项目路径
    .setProjectPath("/Users/xxx/xxx/Neo")
    // 设置实体生成的包路径
    .setEntityPath("com.simonalong.neo.entity")
    // 设置表前缀过滤
    .setPreFix("neo_")
    // 设置要排除的表
    //.setExcludes("xx_test")
    // 设置只要的表
    .setIncludes("neo_table3", "neo_table4")
    // 设置属性中数据库列名字向属性名字的转换,这里设置下划线,比如:data_user_base -> dataUserBase
    .setFieldNamingChg(NamingChg.UNDERLINE);

  // 代码生成
  codeGen.generate();
}

1.生成实体

根据上面的配置即可在对应的位置生成对应的实体结构。比如包含所有字段的表如下

生成的结构

2.抽离公共枚举

对于表中有枚举类型的话,则会先看是否已经有对应的枚举类了,如果有,则不生成,如果有同名的枚举类,但是枚举类型又不同,则会生成内部的枚举类。 表1:(关注其中的枚举类型)

表2:(关注其中的枚举类型)

两个表都是有对应的枚举类型,枚举类型名字相同,则在进行生成的时候,两个一起的话,则先生成的对应的枚举会是公共的,而后者是内部的,如下:

注意: 其中对于枚举类型的注释,这里采用解析字段的remark字段,格式为:

描述:A=xx;B=xxx

其中描述和后面分隔采用冒号,中文的":"和英文":"的均可,类型之间用分号";"和";"都可以

Last updated

Was this helpful?