AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
1.在SpringBoot项目中导入Maven依赖
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!--代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<!--Velocity-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
2.编写配置
@Test
public void code() {
/*创建代码生成器对象*/
AutoGenerator autoGenerator = new AutoGenerator();
/*1.全局配置*/
GlobalConfig gc = new GlobalConfig();
/*获取当前项目路径*/
String property = System.getProperty("user.dir");
/*生成文件的输出目录*/
gc.setOutputDir(property + "/src/main/java");
/*开发人员*/
gc.setAuthor("阿波");
/*是否打开输出目录*/
gc.setOpen(false);
/*是否覆盖已有文件*/
gc.setFileOverride(false);
/*指定生成的主键的ID类型*/
gc.setIdType(IdType.ID_WORKER);
/*去除Service的I前缀*/
gc.setServiceName("%sService");
/*时间类型对应策略*/
gc.setDateType(DateType.ONLY_DATE);
/*开启swagger2模式*/
gc.setSwagger2(true);
/*是否在xml中添加二级缓存配置*/
gc.setEnableCache(true);
/*将配置添加进代码生成器对象*/
autoGenerator.setGlobalConfig(gc);
/*2.配置数据源*/
DataSourceConfig dataSource = new DataSourceConfig();
/*驱动连接的URL*/
dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=Asia/Shanghai");
/*驱动名称*/
dataSource.setDriverName("com.mysql.cj.jdbc.Driver");
/*数据库连接用户名*/
dataSource.setUsername("root");
/*数据库连接密码*/
dataSource.setPassword("libo");
/*数据类型*/
dataSource.setDbType(DbType.MYSQL);
/*将配置添加进代码生成器对象*/
autoGenerator.setDataSource(dataSource);
/*3.包的配置*/
PackageConfig pc = new PackageConfig();
/*父包模块名*/
pc.setModuleName("codeTest");
/*父包名*/
pc.setParent("com.libo");
/*Controller包名*/
pc.setController("controller");
/**Entity包名/
pc.setEntity("entity");
/*Mapper包名*/
pc.setMapper("mapper");
/*Service包名*/
pc.setService("service");
/*将配置添加进代码生成器对象*/
autoGenerator.setPackageInfo(pc);
/*4.策略配置*/
StrategyConfig strategy = new StrategyConfig();
/*设置映射的表名*/
strategy.setInclude("user");
/*数据库表映射到实体的命名策略*/
strategy.setNaming(NamingStrategy.underline_to_camel);
/*数据库表字段映射到实体的命名策略*/
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!");
/*是否为lombok模型*/
strategy.setEntityLombokModel(true);
/*逻辑删除属性名称*/
strategy.setLogicDeleteFieldName("deleted");
/*乐观锁属性名称*/
strategy.setVersionFieldName("version");
/*自动填充*/
TableFill cteateTime = new TableFill("cteate_time", FieldFill.INSERT_UPDATE);
TableFill updateTime = new TableFill("update_time", FieldFill.UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(cteateTime);
tableFills.add(updateTime);
strategy.setTableFillList(tableFills);
strategy.setRestControllerStyle(true);
strategy.setControllerMappingHyphenStyle(true);
/*将配置添加进代码生成器对象*/
autoGenerator.setStrategy(strategy);
/*执行*/
autoGenerator.execute();
}
3.运行后的效果
如果不能忠于自己的心,胜负又有什么价值呢?