Skip to content

代码生成器

该模块从mybatis-mp独立而出,已经历多次迭代,可放心使用!!!

maven引入

xml
<dependency>
    <groupId>cn.mybatis-mp</groupId>
    <artifactId>mybatis-mp-generator-core</artifactId>
    <version>1.0.3-RC3</version>
</dependency>

添加数据库驱动 例如:

xml

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.32</version>
</dependency>

然后,编写一个任意带有 main 方法的类,如下所示

java
// 根据数据库链接生成
new FastGenerator(new GeneratorConfig(
        "jdbc:mysql://xxx.xx.x:3306/数据库名字",
        "用户名",
                          "密码")
        .basePackage("com.test")//根包路径
        ).create();

or

//根据数据源生成
new FastGenerator(new GeneratorConfig(
        DbType.H2,//数据库类型
                  dataSource)
        .basePackage("com.test")//根包路径
        ).create();

配置 GeneratorConfig

属性默认值说明
charsetutf-8生成文件的字符集
containerTypeSPRING

容器类型,默认SPRING

目前支持,SPRING、SOLON

swaggerVersion3swagger版本:2 代表2.x,3代表3.x
author""作者
fileCovertrue文件是否覆盖
ignoreViewfalse是否忽略视图
ignoreTablefalse是否忽略表
baseFilePathSystem.getProperty("user.dir") + "/demo-generate"根文件路径
basePackageNULL根包路径
javaPathNULL基于baseFilePath的java源码文件相对路径
resourcePathNULL基于baseFilePath的resource文件相对路径
templateRootPathtemplates模板根目录,默认即可
templateEnginenew FreemarkerTemplateEngine()模板引擎,默认Freemarker引擎,其他引擎需要自己实现
templateBuilders包含 实体类,mapper,mapper xml,dao,service,serviceImpl,action等模板生成构建器模板生成构建器,继承AbstractTemplateBuilder,即可实现自己的生成器(生成自己的页面或其他类等)

配置 TableConfig(表配置)

java
new GeneratorConfig(...).tableConfig(tableConfig->{
        tableConfig.includeTables("table1","table2");
});
属性默认值说明
tablePrefixes表、视图的前缀,用于生成类名时忽略前缀
includeTables默认包含所有表、视图
excludeTables排除表,默认不排除

配置 ColumnConfig(列配置)

java
new GeneratorConfig(...).columnConfig(columnConfig->{

        });
属性默认值说明
columnPrefixes列前缀,可进行列字段忽略前缀
versionColumn指定乐观锁列名
tenantIdColumn指定租户ID列名
logicDeleteColumn逻辑删除列名,配置实体类配置:logicDeleteCode 一起使用
disableUpdateColumns禁止更新的列,这样字段上会生成@TableField(update=false)
disableSelectColumns禁止Select的列,这样字段上会生成@TableField(select=false)
defaultValueConvert默认实现可动态转换数据库的默认值(由静态值转成动态值)

配置 EntityConfig(实体类配置)

java
new GeneratorConfig(...).entityConfig(entityConfig->{
        entityConfig.lombok(true).excludeColumns("create_time","creater_id");;
});
属性默认值说明
commenttrue是否生成java注释
excludeColumns排除列,默认不排除(在有公共实体类的时候很实用)
swaggerfalse是否开启swagger
serialfalse是否序列化,会implements Serializable
superClassNULL实体类的父类,例如:com.xx.test.BaseEntity
lomboktrue是否开启lombok,这样类上会生成@Data
lombokBuilderfalse是否开启lombok buidler,这样类上会生成@Buidler
defaultValueEnabletrue是否生成默认值
schemafalse注解上是否加上schema信息
packageNameDO实体类包名
nameConvertNULL实体类名转换器,可以自定义规则,默认大驼峰规则
fieldNamingStrategyNamingStrategy.UNDERLINE_TO_CAMEL字段名策略,支持 NO_CHANGE ,UNDERLINE_TO_CAMEL
fieldNameConverterNULL字段名转换器,优先级大于 fieldNamingStrategy
remarksConverterNULL字段备注转换器,用于实现不一样的备注
defaultTableIdCodeNULL默认TableId代码,数据库非自增时生效,例如@TableId(...)
logicDeleteCodeNULL默认@LogicDelete代码,数据库非自增时生效,例如@LogicDelete(beforeValue="0",afterValue="1",deleteTimeField="create_time")
typeMapping内置包含各种列类型的java映射数据库列类型映射,用于定制
alwaysAnnotationfalse是否总是生成注解

配置 MapperConfig(mapper类配置)

java
new GeneratorConfig(...).mapperConfig(mapperConfig->{
        mapperConfig.mapperAnnotation(true);
});
属性默认值说明
superClass默认继承 MybatisMapper 接口Mapper接口的父接口,例如:cn.mybatis.mp.core.mybatis.mapper.MybatisMapper
mapperAnnotationtrue是否开启mybatis @Mapper注解,这样类上会生成@Mapper
packageNamemappermapper类的包名
suffixMappermapper类的后缀

配置 MapperXmlConfig(mapper xml配置)

java
new GeneratorConfig(...).mapperXmlConfig(mapperXmlConfig->{
        mapperXmlConfig.enable(true);
});
属性默认值说明
enablefalse是否生成mapper xml
resultMapfalse是否生成resultMap
columnListfalse是否生成列信息,用于select 列
packageNamemappersmapper xml的目录名字
suffix""mapper xml文件的后缀

配置 DaoConfig(dao接口配置)

java
new GeneratorConfig(...).daoConfig(daoConfig->{
        daoConfig.enable(true);
});
属性默认值说明
enabletrue是否生成 dao 接口
superClass默认继承 Dao 接口dao接口的父接口,例如:cn.mybatis.mp.core.mvc.Dao
generictrue是否启用泛型,启用后会在superclass后面加泛型>Entity,ID>
packageNamedaodao接口的包名
suffixDaodao接口的后缀

配置 DaoImplConfig(dao接口实现类的配置)

java
new GeneratorConfig(...).daoImplConfig(daoImplConfig->{
        daoImplConfig.enable(true);
});
属性默认值说明
superClass默认继承 DaoImpl 实现类dao接口的父接口,例如:cn.mybatis.mp.core.mvc.impl.DaoImpl
enabletrue是否生成 dao impl接口
generictrue是否启用泛型,启用后会在superclass后面加泛型>Entity,ID>
packageNamedao.impldao实现类的包名
suffixDaoImpldao实现类的后缀

配置 ServiceConfig(service接口配置)

java
new GeneratorConfig(...).serviceConfig(serviceConfig->{
        serviceConfig.enable(true);
});
属性默认值说明
enabletrue是否生成 Service 接口
superClass默认继承 Service 接口Service接口的父接口,例如:cn.mybatis.mp.core.mvc.Service
genericfalse是否启用泛型,启用后会在superclass后面加泛型>Entity,ID>
packageNameserviceService接口的包名
suffixServiceService接口的后缀

配置 ServiceImplConfig(service接口实现类的配置)

java
new GeneratorConfig(...).serviceImplConfig(serviceImplConfig->{
        serviceImplConfig.injectDao(true);
});
属性默认值说明
enabletrue是否生成 dao impl 接口
injectDaotrue是否注入dao
injectMappertrue是否注入mapper
superClass默认继承 ServiceImpl 实现类dao接口的父接口,例如:cn.mybatis.mp.core.mvc.impl.ServiceImpl
genericfalse是否启用泛型,启用后会在superclass后面加泛型>Entity,ID>
packageNameservice.implservice实现类的包名
suffixServiceImplservice实现类的后缀

配置 ActionConfig(action实现类的配置)

java
new GeneratorConfig(...).actionConfig(actionConfig->{
        actionConfig.enable(true);
});
属性默认值说明
enabletrue是否生成控制器
commenttrue是否生成java注释
swaggertrue是否开启swagger
injectServicetrue是否注入service
superClassNULLaction父类,例如:cn.xxx.BaseAction
genericfalse是否启用泛型,启用后会在superclass后面加泛型>Entity,ID>
packageNameactionaction实现类的包名
suffixActionaction实现类的后缀
returnClassObjectget save update delete find等返回的类型
enableSavetrue是否生成save方法
enableUpdatetrue是否生成update方法
enableDeletetrue是否生成delete方法
enableGettrue是否生成get方法
enableFindtrue是否生成find方法