Mybatis Plus代码生成器
本文主要介绍了怎么样快速从0到1,创建一个Mybatis plus的代码生成器,可以通过配置,一键生成Service、
dao、entity、以及mapper.xml,以提高工作效率。
1.首先引入相关的maven依赖。
<!-- mybatis plus 生成器所需要依赖开始 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<!-- mybatis plus 生成器所需要依赖结束 -->
这几个依赖是我们所建立的生成器所必须的依赖。其中mybatis-plus-generator即生成器依赖,由于我们使用的数据库是mysql,所以引入mysql相关驱动依赖,如需使用其它数据库,对应引入即可。freemarker是一个模板引擎,我们是基于该模板进行生成的。junit是一个单元测试的依赖。如需要其它依赖如lombok也是对应引入即可。
2.生成器代码
package com.test.generate;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.ArrayList;
/**
* @author jamin
* @date 2021/10/06
*/
public class GenerateMybatisPlus {
//文件输出位置
private static String outputDir = "/Users/xxx/xxx";
//基本包名
private static String basepackage = "xxx.xxx.xxx.xxx";
//要生成的表名
private static String[] tables = {"tableName"};
//table前缀
private static String prefix = "";
//作者
private static String authorName = "xxx";
//是否生成mapper.xml文件StrategyLog.java
private static Boolean creatXml = true;
//是否生成controller文件
private static Boolean creatController = true;
//数据库四要素
private static String diverName = "com.mysql.cj.jdbc.Driver";
private static String url = "jdbc:mysql://xxx.xxx.xxx.xxx:3306/accessname?characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=CTT";
private static String userName = "username";
private static String password = "password";
public static void main(String[] args) {
//代码生成器
AutoGenerator mpg = new AutoGenerator();
//全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(outputDir);
gc.setAuthor(authorName);
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setMapperName("%sMapper");
gc.setOpen(true);
gc.setFileOverride(true);
gc.setActiveRecord(true);
gc.setEnableCache(false);//xml二级缓存
gc.setBaseResultMap(true);//xml ResultMap
gc.setBaseColumnList(true);//xml columList
gc.setSwagger2(false);//实体属性是否开启swagger2注解
mpg.setGlobalConfig(gc);
//数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl(url);
//dsc.setSchemaName("public");
dsc.setDriverName(diverName);
dsc.setUsername(userName);
dsc.setPassword(password);
mpg.setDataSource(dsc);
//包配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
//to do nothing
}
};
//如果模板引起是freemarker
String templatePath = "/templates/mapper.xml.ftl";
//自定义输出配置
ArrayList<FileOutConfig> focList = new ArrayList<>();
//自定义输出配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
//自定义输出文件名,如果你的entity设置了前缀,此处注意xml的名称会跟着发生变化!!!!
return outputDir + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
//是否生成xml文件
if (creatXml) {
mpg.setCfg(cfg);
}
//配置模板
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
//是否生成controller
if (creatController) {
templateConfig.setController(null);
}
mpg.setTemplate(templateConfig);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent(basepackage);
mpg.setPackageInfo(pc);
//策略配置
StrategyConfig strategy = new StrategyConfig();
//命名规则
strategy.setNaming(NamingStrategy.underline_to_camel);
//实体是否使用Lombok插件
strategy.setEntityLombokModel(true);
strategy.setInclude(tables);//需要生成的表
strategy.setTablePrefix(prefix);
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}
需要修改的地方有文件输出位置、包名、表名、作者、数据库配置包括数据库的ip、端口、账号密码等配置信息等。
3.文件生成
点击运行,即可。
生成成功后会在目标位置生成相关文件。