# xbatis-generator-core
**Repository Path**: xbatis/xbatis-generator-core
## Basic Information
- **Project Name**: xbatis-generator-core
- **Description**: xbatis代码生成器core
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 0
- **Created**: 2024-10-25
- **Last Updated**: 2025-10-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# English wiki: [](https://deepwiki.com/xbatis/xbatis-generator-core)
# 代码生成器
```
该模块从xbatis独立而出,已经历多次迭代,可放心使用!!!
``` 
## maven引入
```xml
    cn.xbatis
    xbatis-generator-core
    1.1.3
```
## 添加数据库驱动 例如:
```xml
    com.mysql
    mysql-connector-j
    9.1.0
```
## 然后,编写一个任意带有 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
    
        | 属性 | 
        默认值 | 
        说明 | 
    
    
        | charset | 
        utf-8 | 
        生成文件的字符集 | 
    
    
        | containerType | 
        SPRING | 
        
             容器类型,默认SPRING 
            目前支持,SPRING、SOLON 
         | 
    
    
        | swaggerVersion | 
        3 | 
        swagger版本:2 代表2.x,3代表3.x | 
    
    
        | author | 
        "" | 
        作者 | 
    
    
        | fileCover | 
        true | 
        文件是否覆盖 | 
    
    
        | ignoreView | 
        false | 
        是否忽略视图 | 
    
    
        | ignoreTable | 
        false | 
        是否忽略表 | 
    
    
        | baseFilePath | 
        System.getProperty("user.dir") + "/demo-generate" | 
        根文件路径 | 
    
    
        | basePackage | 
        NULL | 
        根包路径 | 
    
    
        | javaPath | 
        NULL | 
        基于baseFilePath的java源码文件相对路径 | 
    
    
        | resourcePath | 
        NULL | 
        基于baseFilePath的resource文件相对路径 | 
    
    
        | templateRootPath | 
        templates | 
        模板根目录,默认即可 | 
    
    
        | templateEngine | 
        new 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");;
});
```
    
        | 属性 | 
        默认值 | 
        说明 | 
    
    
        | excludeColumns | 
        空 | 
        排除列,默认不排除(在有公共实体类的时候很实用) | 
    
    
        | swagger | 
        false | 
        是否开启swagger | 
    
    
        | serial | 
        false | 
        是否序列化,会implements Serializable | 
    
    
        | createFieldClass | 
        true | 
        是否生成静态字段名类Fields | 
    
    
        | superClass | 
        NULL | 
        实体类的父类,例如:com.xx.test.BaseEntity | 
    
    
        | lombok | 
        true | 
        是否开启lombok,这样类上会生成@Data | 
    
    
        | lombokBuilder | 
        false | 
        是否开启lombok buidler,这样类上会生成@Buidler | 
    
    
        | defaultValueEnable | 
        true | 
        是否生成默认值 | 
    
    
        | schema | 
        false | 
        注解上是否加上schema信息 | 
    
    
        | packageName | 
        DO | 
        实体类包名 | 
    
    
        | nameConvert | 
        NULL | 
        实体类名转换器,可以自定义规则,默认大驼峰规则 | 
    
    
        | fieldNamingStrategy | 
        NamingStrategy.UNDERLINE_TO_CAMEL | 
        字段名策略,支持 NO_CHANGE ,UNDERLINE_TO_CAMEL  | 
    
    
        | fieldNameConverter | 
        NULL | 
        字段名转换器,优先级大于 fieldNamingStrategy | 
    
    
        | remarksConverter | 
        NULL | 
        字段备注转换器,用于实现不一样的备注 | 
    
    
        | defaultTableIdCode | 
        NULL | 
        默认TableId代码,数据库非自增时生效,例如@TableId(...) | 
    
    
        | logicDeleteCode | 
        NULL | 
        默认@LogicDelete代码,数据库非自增时生效,例如@LogicDelete(beforeValue="0",afterValue="1",deleteTimeField="create_time") | 
    
    
        | typeMapping | 
        内置包含各种列类型的java映射 | 
        数据库列类型映射,用于定制 | 
    
    
        | alwaysAnnotation | 
        false | 
        是否总是生成注解 | 
    
## 配置 MapperConfig(mapper类配置)
```java
new GeneratorConfig(...).mapperConfig(mapperConfig->{
    mapperConfig.mapperAnnotation(true);
});
```
    
        | 属性 | 
        默认值 | 
        说明 | 
    
    
        | superClass | 
        默认继承 MybatisMapper 接口 | 
        Mapper接口的父接口,例如:cn.xbatis.core.mybatis.mapper.MybatisMapper | 
    
    
        | mapperAnnotation | 
        true | 
        是否开启mybatis @Mapper注解,这样类上会生成@Mapper | 
    
    
        | packageName | 
        mapper | 
        mapper类的包名 | 
    
    
        | suffix | 
        Mapper | 
        mapper类的后缀 | 
    
## 配置 MapperXmlConfig(mapper xml配置)
```java
new GeneratorConfig(...).mapperXmlConfig(mapperXmlConfig->{
    mapperXmlConfig.enable(true);
});
```
    
        | 属性 | 
        默认值 | 
        说明 | 
    
    
        | enable | 
        false | 
        是否生成mapper xml | 
    
    
        | resultMap | 
        false | 
        是否生成resultMap | 
    
    
        | columnList | 
        false | 
        是否生成列信息,用于select 列 | 
    
    
        | packageName | 
        mappers | 
        mapper xml的目录名字 | 
    
    
        | suffix | 
        "" | 
        mapper xml文件的后缀 | 
    
## 配置 DaoConfig(dao接口配置)
```java
new GeneratorConfig(...).daoConfig(daoConfig->{
    daoConfig.enable(true);
});
```
    
        | 属性 | 
        默认值 | 
        说明 | 
    
    
        | enable | 
        true | 
        是否生成 dao 接口 | 
    
    
        | superClass | 
        默认继承 Dao 接口 | 
        dao接口的父接口,例如:cn.xbatis.core.mvc.Dao | 
    
    
        | generic | 
        true | 
        是否启用泛型,启用后会在superclass后面加泛型>Entity,ID> | 
    
    
        | packageName | 
        dao | 
        dao接口的包名 | 
    
    
        | suffix | 
        Dao | 
        dao接口的后缀 | 
    
## 配置 DaoImplConfig(dao接口实现类的配置)
```java
new GeneratorConfig(...).daoImplConfig(daoImplConfig->{
    daoImplConfig.enable(true);
});
```
    
        | 属性 | 
        默认值 | 
        说明 | 
    
    
        | superClass | 
        默认继承 DaoImpl 实现类 | 
        dao接口的父接口,例如:cn.xbatis.core.mvc.impl.DaoImpl | 
    
   
        | enable | 
        true | 
        是否生成 dao impl接口 | 
    
    
        | generic | 
        true | 
        是否启用泛型,启用后会在superclass后面加泛型>Entity,ID> | 
    
    
        | packageName | 
        dao.impl | 
        dao实现类的包名 | 
    
    
        | suffix | 
        DaoImpl | 
        dao实现类的后缀 | 
    
## 配置 ServiceConfig(service接口配置)
```java
new GeneratorConfig(...).serviceConfig(serviceConfig->{
    serviceConfig.enable(true);
});
```
    
        | 属性 | 
        默认值 | 
        说明 | 
    
    
        | enable | 
        true | 
        是否生成 Service 接口 | 
    
    
        | superClass | 
        默认继承 Service 接口 | 
        Service接口的父接口,例如:cn.xbatis.core.mvc.Service | 
    
    
        | generic | 
        false | 
        是否启用泛型,启用后会在superclass后面加泛型>Entity,ID> | 
    
    
        | packageName | 
        service | 
        Service接口的包名 | 
    
    
        | suffix | 
        Service | 
        Service接口的后缀 | 
    
## 配置 ServiceImplConfig(service接口实现类的配置)
```java
new GeneratorConfig(...).serviceImplConfig(serviceImplConfig->{
    serviceImplConfig.injectDao(true);
});
```
    
        | 属性 | 
        默认值 | 
        说明 | 
    
    
        | enable | 
        true | 
        是否生成 dao impl 接口 | 
    
    
        | injectDao | 
        true | 
        是否注入dao | 
    
    
        | injectMapper | 
        true | 
        是否注入mapper | 
    
    
        | superClass | 
        默认继承 ServiceImpl 实现类 | 
        dao接口的父接口,例如:cn.xbatis.core.mvc.impl.ServiceImpl | 
    
    
        | generic | 
        false | 
        是否启用泛型,启用后会在superclass后面加泛型>Entity,ID> | 
    
    
        | packageName | 
        service.impl | 
        service实现类的包名 | 
    
    
        | suffix | 
        ServiceImpl | 
        service实现类的后缀 | 
    
## 配置 ActionConfig(action实现类的配置)
```java
new GeneratorConfig(...).actionConfig(actionConfig->{
    actionConfig.enable(true);
});
```
    
        | 属性 | 
        默认值 | 
        说明 | 
    
    
        | enable | 
        true | 
        是否生成控制器 | 
    
    
        | swagger | 
        true | 
        是否开启swagger | 
    
    
        | injectService | 
        true | 
        是否注入service | 
    
    
        | superClass | 
        NULL | 
        action父类,例如:cn.xxx.BaseAction | 
    
    
        | generic | 
        false | 
        是否启用泛型,启用后会在superclass后面加泛型>Entity,ID> | 
    
    
        | packageName | 
        action | 
        action实现类的包名 | 
    
    
        | suffix | 
        Action | 
        action实现类的后缀 | 
    
    
        | returnClass | 
        Object | 
        get save update delete find等返回的类型 | 
    
    
        | enableSave | 
        true | 
        是否生成save方法 | 
    
    
        | enableUpdate | 
        true | 
        是否生成update方法 | 
    
    
        | enableDelete | 
        true | 
        是否生成delete方法 | 
    
    
        | enableGet | 
        true | 
        是否生成get方法 | 
    
    
        | enableFind | 
        true | 
        是否生成find方法 |