本文给大家介绍新版MybatisPlusAutoGenerator代码自动生成器的使用方式
一、添加依赖
<!-- MybatisPlus代码自动生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
<!-- 默认模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
新版代码生成器仅支持3.5.1及以上版本。本文使用的是3.5.3.1版本,大家也可以去下载最新版本。
除了mybatis-plus-generator
的依赖以外,还添加了模板引擎的依赖velocity-engine-core
,注意了,没有模板引擎的依赖运行是会报错的!
二、编写工具类
public class MybatisPlusAutoGeneratorUtil {
public static void execute(){
//配置数据库参数
DataSourceConfig.Builder config = new DataSourceConfig.Builder(
"sql_url",
"username",
"password");
//mybatisPlus总共支持6种配置
FastAutoGenerator.create(config)
//全局配置
.globalConfig((scanner,builder) -> {
//配置作者
builder.author("author")
//配置时间
.commentDate("yyyy-MM-dd")
//输出目录
.outputDir("D:\\mybatisPlus");
})
//包配置
.packageConfig((scanner,builder) -> {
//配置父包名
builder.parent("your.package.name");
})
//策略配置
.strategyConfig((scanner,builder) -> {
// 设置需要生成的表名
builder.addInclude("table_name")
//配置模型
.entityBuilder().enableFileOverride()
//配置控制器
.controllerBuilder().enableRestStyle().enableFileOverride()
//配置服务
.serviceBuilder().enableFileOverride()
//配置Mapper
.mapperBuilder().enableFileOverride();
})
//模板配置
.templateConfig((scanner,builder)->{
//配置不需要生成的文件
// builder.disable(TemplateType.CONTROLLER,TemplateType.SERVICE,TemplateType.SERVICE_IMPL);
})
//注入配置
// .injectionConfig((scanner,builder) ->{})
//模板引擎配置
// .templateConfig(builder->{})
.execute();
}
public static void main(String[] args) {
MybatisPlusAutoGeneratorUtil.execute();
}
}
上面是工具类的模板,填上你自己的配置就可以使用了。
当然,接下来会大致介绍一下mybatis-plus-generator
有哪些功能,以便读者可以自定义自己的代码自动生成器。
三、功能说明
这里先附上官方文档,不过官方文档只有例子,没有详细的说明。
Mybatis-Plus代码生成器(新)官方文档
mybatis-plus-generator
除了数据库配置外,一共有6种配置,全局配置、包配置、策略配置、模板配置、注入配置、模板引擎配置。所以总共来说一共有7个。
1.数据库配置
数据库配置其实主要就是3个,数据库访问路径,用户名还有密码,这就够了。如上图中的代码
//配置数据库参数
DataSourceConfig.Builder config = new DataSourceConfig.Builder(
//访问路径
"sql_url",
//用户名
"username",
//密码
"password");
创建好配置就可以正式开始配置代码生成器了
FastAutoGenerator.create(config);
代码生成器使用FastAutoGenerator
的静态方法create()
来创建。
2.全局配置
FastAutoGenerator.create(config)
//全局配置
.globalConfig((scanner,builder) -> {
//配置作者
builder.author("author")
//配置时间
.commentDate("yyyy-MM-dd")
//输出目录
.outputDir("D:\\mybatisPlus");
})
全局配置可以配置,作者,创建时间,输出目录,开启swagger,开启springdoc等,更多功能可以查看源代码的GlobalConfig
类,如下图所示
/**
* 生成文件的输出目录【 windows:D:// linux or mac:/tmp 】
*/
private String outputDir = System.getProperty("os.name").toLowerCase().contains("windows") ? "D://" : "/tmp";
/**
* 是否覆盖已有文件(默认 false)(已迁移到策略配置中,3.5.4版本会删除此方法)
*/
@Deprecated
private boolean fileOverride;
/**
* 是否打开输出目录
*/
private boolean open = true;
/**
* 作者
*/
private String author = "baomidou";
/**
* 开启 Kotlin 模式(默认 false)
*/
private boolean kotlin;
/**
* 开启 swagger 模式(默认 false 与 springdoc 不可同时使用)
*/
private boolean swagger;
/**
* 开启 springdoc 模式(默认 false 与 swagger 不可同时使用)
*/
private boolean springdoc;
/**
* 时间类型对应策略
*/
private DateType dateType = DateType.TIME_PACK;
/**
* 获取注释日期
*
* @since 3.5.0
*/
private Supplier<String> commentDate = () -> new SimpleDateFormat("yyyy-MM-dd").format(new Date());
/**
* 是否生成service 接口(默认 true)
* 增加此开关的原因:在某些项目实践中,只需要生成service实现类,不需要抽象sevice接口
* 针对某些项目,生成service接口,开发时反而麻烦,这种情况,可以将该属性设置为false
*/
private boolean serviceInterface = true;
public String getOutputDir() {
return outputDir;
}
3.包配置
FastAutoGenerator.create(config)
//包配置
.packageConfig((scanner,builder) -> {
//配置父包名
builder.parent("your.package.name");
})
包配置可以配置父包名,Service包名,Service Impl包名,Controller包名,Mapper包名,Entity包名等,更多功能查看源码PackageConfig
类,如下图
private String parent = "com.baomidou";
/**
* 父包模块名
*/
private String moduleName = "";
/**
* Entity包名
*/
private String entity = "entity";
/**
* Service包名
*/
private String service = "service";
/**
* Service Impl包名
*/
private String serviceImpl = "service.impl";
/**
* Mapper包名
*/
private String mapper = "mapper";
/**
* Mapper XML包名
*/
private String xml = "mapper.xml";
/**
* Controller包名
*/
private String controller = "controller";
/**
* 路径配置信息
*/
private Map<OutputFile, String> pathInfo;
/**
* 包配置信息
*
* @since 3.5.0
*/
private final Map<String, String> packageInfo = new HashMap<>();
4.策略配置
FastAutoGenerator.create(config)
//策略配置
.strategyConfig((scanner,builder) -> {
// 设置需要生成的表名
builder.addInclude("table_name")
//配置模型
.entityBuilder().enableFileOverride()
//配置控制器
.controllerBuilder().enableRestStyle().enableFileOverride()
//配置服务
.serviceBuilder().enableFileOverride()
//配置Mapper
.mapperBuilder().enableFileOverride();
})
可以配置要生成代码的表名,过滤表前缀,过滤表后缀,配置控制器,模型,服务,Mapper的生成规则,是否覆盖原文件等,更多功能查看源码StrategyConfig
类,如下图
/**
* 是否大写命名(默认 false)
*/
private boolean isCapitalMode;
/**
* 是否跳过视图(默认 false)
*/
private boolean skipView;
/**
* 过滤表前缀
* example: addTablePrefix("t_")
* result: t_simple -> Simple
*/
private final Set<String> tablePrefix = new HashSet<>();
/**
* 过滤表后缀
* example: addTableSuffix("_0")
* result: t_simple_0 -> Simple
*/
private final Set<String> tableSuffix = new HashSet<>();
/**
* 过滤字段前缀
* example: addFieldPrefix("is_")
* result: is_deleted -> deleted
*/
private final Set<String> fieldPrefix = new HashSet<>();
/**
* 过滤字段后缀
* example: addFieldSuffix("_flag")
* result: deleted_flag -> deleted
*/
private final Set<String> fieldSuffix = new HashSet<>();
/**
* 需要包含的表名,允许正则表达式(与exclude二选一配置)<br/>
* 当{@link #enableSqlFilter}为true时,正则表达式无效.
*/
private final Set<String> include = new HashSet<>();
/**
* 需要排除的表名,允许正则表达式<br/>
* 当{@link #enableSqlFilter}为true时,正则表达式无效.
*/
private final Set<String> exclude = new HashSet<>();
/**
* 启用sql过滤,语法不能支持使用sql过滤表的话,可以考虑关闭此开关.
*
* @since 3.3.1
*/
private boolean enableSqlFilter = true;
/**
* 启用 schema 默认 false
*/
private boolean enableSchema;
/**
* 包含表名
*
* @since 3.3.0
*/
private LikeTable likeTable;
/**
* 不包含表名
*
* @since 3.3.0
*/
private LikeTable notLikeTable;
private final Entity.Builder entityBuilder = new Entity.Builder(this);
private final Controller.Builder controllerBuilder = new Controller.Builder(this);
private final Mapper.Builder mapperBuilder = new Mapper.Builder(this);
private final Service.Builder serviceBuilder = new Service.Builder(this);
5.模板配置
FastAutoGenerator.create(config)
//模板配置
.templateConfig((scanner,builder)->{
//配置不需要生成的文件
// builder.disable(TemplateType.CONTROLLER,TemplateType.SERVICE,TemplateType.SERVICE_IMPL);
})
可以配置各个实体类模板的位置,以及是否禁用模板,不生成文件等,更多功能查看源码TemplateConfig
类
/**
* 设置实体模板路径
*/
private String entity;
/**
* 设置实体模板路径(kotlin模板)
*/
private String entityKt;
/**
* 设置控制器模板路径
*/
private String controller;
/**
* 设置Mapper模板路径
*/
private String mapper;
/**
* 设置MapperXml模板路径
*/
private String xml;
/**
* 设置Service模板路径
*/
private String service;
/**
* 设置ServiceImpl模板路径
*/
private String serviceImpl;
/**
* 是否禁用实体模板(默认 false)
*/
private boolean disableEntity;
6.注入配置
FastAutoGenerator.create(config)
//注入配置
// .injectionConfig((scanner,builder) ->{})
可以配置自定义模板等,更多功能查看源码InjectionConfig
类
/**
* 输出文件之前消费者
*/
private BiConsumer<TableInfo, Map<String, Object>> beforeOutputFileBiConsumer;
/**
* 自定义配置 Map 对象
*/
private Map<String, Object> customMap = new HashMap<>();
/**
* 自定义模板文件,key为文件名称,value为模板路径(已弃用,换成了customFiles,3.5.4版本会删除此方法)
*/
@Deprecated
private Map<String, String> customFile = new HashMap<>();
/**
* 自定义模板文件列表
*
* @since 3.5.3
*/
private List<CustomFile> customFiles = new ArrayList<>();
/**
* 是否覆盖已有文件(默认 false)(已弃用,已放到自定义文件类CustomFile中,3.5.4版本会删除此方法)
*
* @since 3.5.2
*/
@Deprecated
private boolean fileOverride;
7.模板引擎配置
FastAutoGenerator.create(config)
//模板引擎配置
// .templateConfig(builder->{})
可以配置模板引擎,更多功能查看源码AbstractTemplateEngine
类
对你有帮助吗?点个赞把~