代码生成器 AutoGenerator
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
适用版本:mybatis-plus-generator 3.5.1 以上版本
目前官网上有两种生成方式可以选择分别是快速生成和交互式生成,教程中使用的快速生成的方式
引入相关依赖
<!--mybatis plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<!--mybatis plus generator-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
<!--velocity-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
MybatisPlus的版本是3.5.2
AutoGenerator的版本和MybatisPlus一致
velocity 生成代码的模板还可以是freemarker等
设计生成器
各位看官这块我就不展开写了,代码生成器主主要是一个Tool,杂七杂八的配置可以参考官方文档. 闲话少絮,直接上代码...
package com.zkjs.jszlyxzj.generator;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CodeGenerator {
public static void main(String[] args) {
String databaseUrl = "**DSUrl**";
String databaseUser = "**DSUsername**";
String databasePassword = "**DSPassword**";
List<String> tables = new ArrayList<>();
tables.add("**tablename**");
DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(databaseUrl, databaseUser, databasePassword)
.build();
AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig);
// 全局配置
GlobalConfig globalConfig = new GlobalConfig.Builder()
.disableOpenDir()
.outputDir(System.getProperty("user.dir") + "/src/main/java")
.author("**name**")
// .enableKotlin()
.enableSwagger()
// .dateType(DateType.ONLY_DATE) // 默认: DateType.TIME_PACK
.commentDate("yyyy-MM-dd hh:mm:ss")
.build();
// 包配置
PackageConfig packageConfig = new PackageConfig.Builder()
.parent("**packageName**")
// .moduleName("login")
.entity("domain") // 默认: entity
// .service("service") // 默认: service
// .serviceImpl("service.impl") // 默认: service.impl
// .mapper("mapper") // 默认: mapper
// .xml("mapper.xml") // 默认: mapper.xml
// .controller("controller") // 默认: controller
// .other("other")
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mappers"))
.build();
// 模板配置
TemplateConfig templateConfig = new TemplateConfig.Builder()
// .disable()
// .entity("/templates/entity.java")
// .service("/templates/service.java")
// .serviceImpl("/templates/serviceImpl.java")
// .mapper("/templates/mapper.java")
// .controller("/templates/controller.java")
.build();
// 注入配置
InjectionConfig injectionConfig = new InjectionConfig.Builder()
// .beforeOutputFile((tableInfo, objectMap) -> {
// System.out.println("tableInfo: " + tableInfo.getEntityName() + " objectMap: " + objectMap.size());
// })
// .customMap(Collections.singletonMap("test", "baomidou"))
// .customFile(Collections.singletonMap("test.txt", "/templates/test.vm"))
.build();
// 策略配置
StrategyConfig strategyConfig = new StrategyConfig.Builder()
// .enableCapitalMode() // 开启大写命名 默认值:false
.enableSkipView() // 开启跳过视图 默认值:false
// .disableSqlFilter() // 禁用 sql 过滤 默认值:true,语法不能支持使用 sql 过滤表的话,可以考虑关闭此开关
// .enableSchema() // 启用 schema 默认值:false,多 schema 场景的时候打开
// .likeTable() // 模糊表匹配(sql 过滤) likeTable 与 notLikeTable 只能配置一项
// .notLikeTable() // 模糊表排除(sql 过滤) likeTable 与 notLikeTable 只能配置一项
// .addInclude() // 增加表匹配(内存过滤) include 与 exclude 只能配置一项 ,支持正则匹配、例如 ^t_.* 所有 t_ 开头的表名
// .addExclude() // 增加表排除匹配(内存过滤) include 与 exclude 只能配置一项 ,支持正则匹配、例如 .*st$ 所有 st 结尾的表名
// .addTablePrefix() // 增加过滤表前缀
// .addTableSuffix() // 增加过滤表后缀
// .addFieldPrefix() // 增加过滤字段前缀
// .addFieldSuffix() // 增加过滤字段后缀
.addInclude(tables)
// Entity策略配置
.entityBuilder()
// .nameConvert() // 名称转换实现
// .superClass(BaseEntity.class) // 设置父类 BaseEntity.class | com.baomidou.global.BaseEntity
// .disableSerialVersionUID() // 禁用生成 serialVersionUID 默认值:true
// .enableColumnConstant() // 开启生成字段常量 默认值:false
// .enableChainModel() // 开启链式模型 默认值:false
.enableLombok() // 开启 lombok 模型 默认值:false
// .enableRemoveIsPrefix() // 开启 Boolean 类型字段移除 is 前缀 默认值:false
.enableTableFieldAnnotation() // 开启生成实体时生成字段注解 默认值:false
// .enableActiveRecord() // 开启 ActiveRecord 模型 默认值:false
// .versionColumnName("deleted") // 乐观锁字段名(数据库字段) versionColumnName与versionPropertyName二选一即可
// .versionPropertyName("deleted") // 乐观锁属性名(实体) versionColumnName与versionPropertyName二选一即可
// .logicDeleteColumnName("deleted") // 逻辑删除字段名(数据库字段) logicDeleteColumnName与logicDeletePropertyName二选一即可
// .logicDeletePropertyName("deleted") // 逻辑删除属性名(实体) logicDeleteColumnName与logicDeletePropertyName二选一即可
// .naming(NamingStrategy.no_change) // 数据库表映射到实体的命名策略 默认下划线转驼峰命名:NamingStrategy.underline_to_camel
.columnNaming(NamingStrategy.underline_to_camel) // 数据库表字段映射到实体的命名策略 默认为 null,未指定按照 naming 执行
// .addSuperEntityColumns("id") // 添加父类公共字段
// .addIgnoreColumns("age") // 添加忽略字段
// .addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE)) // 添加表字段填充
// .idType(IdType.AUTO) // 全局主键类型
// .convertFileName() // 转换文件名称
// .formatFileName("%sEntity") // 格式化文件名称
.fileOverride()
// Controller策略配置
.controllerBuilder()
// .superClass(BaseController.class) // 设置父类 BaseController.class | com.baomidou.global.BaseController
// .enableHyphenStyle() // 开启驼峰转连字符 默认值:false
// .enableRestStyle() // 开启生成@RestController 控制器 默认值:false
// .convertFileName() // 转换文件名称
.formatFileName("%sAction") // 格式化文件名称
.fileOverride()
// Mapper策略配置
.mapperBuilder()
// .superClass(BaseMapper.class) // 设置父类 BaseMapper.class | com.baomidou.global.BaseMapper
.enableMapperAnnotation() // 开启 @Mapper 注解 默认值:false
.enableBaseResultMap() // 启用 BaseResultMap 生成 默认值:false
// .enableBaseColumnList() // 启用 BaseColumnList 默认值:false
// .cache(MyMapperCache.class) // 设置缓存实现类 MyMapperCache.class
// .convertMapperFileName() // 转换 mapper 类文件名称
// .convertXmlFileName() // 转换 xml 文件名称
.formatMapperFileName("%sMapper") // 格式化 mapper 文件名称
.formatXmlFileName("%sMapper") // 格式化 xml 实现类文件名称
.fileOverride()
// Service策略配置
.serviceBuilder()
// .superServiceClass(BaseService.class) // 设置 service 接口父类 BaseService.class | com.baomidou.global.BaseService
// .superServiceImplClass(BaseServiceImpl.class) // 设置 service 实现类父类 BaseServiceImpl.class | com.baomidou.global.BaseServiceImpl
// .convertServiceFileName() // 转换 service 接口文件名称
// .convertServiceImplFileName() // 转换 service 实现类文件名称
.formatServiceFileName("%sService") // 格式化 service 接口文件名称
.formatServiceImplFileName("%sServiceImpl") // 格式化 service 实现类文件名称
.fileOverride()
.build();
// autoGenerator.global(globalConfig).packageInfo(packageConfig).template(templateConfig).injection(injectionConfig).strategy(strategyConfig).execute();
autoGenerator.global(globalConfig).packageInfo(packageConfig).strategy(strategyConfig).execute();
}
}
content代码中这种代码需要替换
DSUrl: 数据库地址
DSUsername: 数据库用户
DSPassword: 数据库密码
tablename: 表名,可以同时生成多个也就是多add几个表
name: 作者
packageName: 包
其他的配置参考代码里面注释或者参考官网
生成代码
运行上面设计的生成器就可以生成代码了.