1.pom文件中添加依赖,版本号自己控制
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
2.编写CodeGenerator类,运行main方法即可自动生成
package com.yuhan.demo;
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.VelocityTemplateEngine;
import java.util.ArrayList;
import java.util.List;
/**
* @author yuhan
* @since 2020-03-30
*/
public class CodeGenerator {
private static final String OUTPUT_DIR = System.getProperty("user.dir") + "/src/main/java";
private static final String AUTHOR = "yuhan";
private static final String URL = "jdbc:mysql://127.0.0.1:3306/etcdb?useUnicode=true&useSSL=false&characterEncoding=utf8";
private static final String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
private static final String PARENT = "com.yuhan.demo.code";
private static final String CONTROLLER = "controller";
private static final String SERVICE = "service";
private static final String SERVICE_IMPL = "service.impl";
private static final String ENTITY = "model";
private static final String MAPPER = "mapper";
private static final String TEMPLATE_PATH = "/templates/mapper.xml.vm";
private static String getTableName() {
return "tableName";
}
private static String getModuleName() {
return "entityName";
}
public static void main(String[] args) {
//代码生成器
AutoGenerator autoGenerator = new AutoGenerator();
//全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setAuthor(AUTHOR);
globalConfig.setOutputDir(OUTPUT_DIR);
globalConfig.setOpen(false);
autoGenerator.setGlobalConfig(globalConfig);
//数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUrl(URL);
dataSourceConfig.setDriverName(DRIVER_NAME);
dataSourceConfig.setUsername(USERNAME);
dataSourceConfig.setPassword(PASSWORD);
autoGenerator.setDataSource(dataSourceConfig);
//包配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setModuleName(getModuleName());
packageConfig.setParent(PARENT);
packageConfig.setController(CONTROLLER);
packageConfig.setService(SERVICE);
packageConfig.setServiceImpl(SERVICE_IMPL);
packageConfig.setEntity(ENTITY);
packageConfig.setMapper(MAPPER);
autoGenerator.setPackageInfo(packageConfig);
//模板配置
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
autoGenerator.setTemplate(templateConfig);
//策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
strategyConfig.setEntityLombokModel(true);
strategyConfig.setRestControllerStyle(true);
strategyConfig.setEntityTableFieldAnnotationEnable(true);
strategyConfig.setInclude(getTableName());
strategyConfig.setControllerMappingHyphenStyle(true);
autoGenerator.setStrategy(strategyConfig);
// 自定义配置
InjectionConfig injectionConfig = new InjectionConfig() {
@Override
public void initMap() {
}
};
//自定义输出配置
List<FileOutConfig> fileOutConfigList = new ArrayList<>();
fileOutConfigList.add(new FileOutConfig(TEMPLATE_PATH) {
@Override
public String outputFile(TableInfo tableInfo) {
return System.getProperty("user.dir") + "/src/main/resources/mapper/" + packageConfig.getModuleName() + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
injectionConfig.setFileOutConfigList(fileOutConfigList);
autoGenerator.setCfg(injectionConfig);
autoGenerator.setTemplateEngine(new VelocityTemplateEngine());
autoGenerator.execute();
}
}
Finish!