# 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-06-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 代码生成器
```
该模块从xbatis独立而出,已经历多次迭代,可放心使用!!!
```
## maven引入
```xml
cn.xbatis
xbatis-generator-core
1.1.2-M1
```
## 添加数据库驱动 例如:
```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方法 |