前言
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
使用AutoGenerator
1、添加依赖
MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:
添加 代码生成器 依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.2</version>
</dependency>
添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎。
Velocity(默认):
Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上,说白了就类似于jsp,java中定义对应的对象,模板载入后,可以对象信息动态加载入模板
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
Freemarker:
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
Beetl:
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>3.3.2.RELEASE</version>
</dependency>
注意!如果您选择了非默认引擎,需要在 AutoGenerator 中 设置模板引擎,如下
AutoGenerator generator = new AutoGenerator();
// set freemarker engine
generator.setTemplateEngine(new FreemarkerTemplateEngine());
// set beetl engine
generator.setTemplateEngine(new BeetlTemplateEngine());
// set custom engine (reference class is your custom engine class)
generator.setTemplateEngine(new CustomTemplateEngine());
// other config
...
2、编写配置
MyBatis-Plus 的代码生成器提供了大量的自定义参数供用户选择,能够满足绝大部分人的使用需求。
下面是我编写的一个代码生成器类,运行main方法即可生成对应的代码,大家可以参考,如果需要更多的配置,可以查看相应配置类的属性,都是中文注释,很好理解
public class CodeGenerator {
public static void main(String[] args) {
//自动生成器对象
AutoGenerator autoGenerator=new AutoGenerator();
// 选择模板引擎,默认为Veloctiy,如果不是Veloctiy,需要设置,比如下面的Freemarker
// autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
//全局配置
GlobalConfig globalConfig=new GlobalConfig();
//生成文件的输出目录【默认 D 盘根目录】
globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
//开发人员
globalConfig.setAuthor("m");
//是否覆盖已有文件
globalConfig.setFileOverride(true);
autoGenerator.setGlobalConfig(globalConfig);
//数据库配置
DataSourceConfig dataSourceConfig=new DataSourceConfig();
//驱动连接的URL
dataSourceConfig.setUrl("jdbc:mysql://192.168.91.128:3306/mytest?useUnicode=true&useSSL=false&characterEncoding=utf8");
//驱动名称
dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
//数据库账号
dataSourceConfig.setUsername("root");
//数据库密码
dataSourceConfig.setPassword("root");
autoGenerator.setDataSource(dataSourceConfig);
//策略配置
StrategyConfig strategyConfig=new StrategyConfig();
//数据库表字段映射到实体的命名策略,默认为no_change,即原样输出,underline_to_camel为下划线转驼峰命名
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
//实体类是否生成serialVersionUID,默认为true
strategyConfig.setEntitySerialVersionUID(false);
//实体类是否生成字段注解
strategyConfig.setEntityTableFieldAnnotationEnable(false);
//是否给实体类使用lombok
strategyConfig.setEntityLombokModel(true);
//表前缀
// strategyConfig.setTablePrefix("my_","you_");
// 需要排除生成的表
// strategyConfig.setExclude("test,user");
// 需要生成的表,Include与Exclude只能二选一
strategyConfig.setInclude( "test");
autoGenerator.setStrategy(strategyConfig);
//包相关的配置
PackageConfig packageConfig=new PackageConfig();
//设置父包
packageConfig.setParent("com.example.spring_cloud_demo");
autoGenerator.setPackageInfo(packageConfig);
//运行自动生成器
autoGenerator.execute();
}
}