1.添加依赖
<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>2.3</version>
</dependency>
2.代码生成main方法
package com.codinglife.manage.dao;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
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 com.codinglife.common.model.BaseEntity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @description
* @author: jinxiaokai
* @create: 2021-09-04 12:09
**/
public class MybatisPlusGeneratorApp {
public static void main(String[] args) {
//获取项目目录
String parentDir = System.getProperty("user.dir") + "/codinglife-manage";
final String modelName = "app";
//获取pojo目录
String pojodir = parentDir + "/manage-domain/src/main/java/com/codinglife/manage/domain/entity/" + modelName + "/";
//获取mapper目录
String mapperdir = parentDir + "/manage-dao/src/main/java/com/codinglife/manage/dao/mapper/" + modelName + "/";
String mapperxmldir = parentDir + "/manage-dao/src/main/resources/mapper/" + modelName + "/";
//获取模块名
//获取service目录
String servicedir = parentDir + "/manage-service/src/main/java/com/codinglife/manage/service/" + modelName + "/";
String serviceImpldir = parentDir + "/manage-service/src/main/java/com/codinglife/manage/service/impl/" + modelName + "/";
String controllerDir = parentDir + "/manage-web/src/main/java/com/codinglife/manage/controller/" + modelName + "/";
//代码生成
AutoGenerator mpg = new AutoGenerator();
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
GlobalConfig gc = new GlobalConfig();
gc.setActiveRecord(false);
gc.setSwagger2(false);
gc.setAuthor("jinxiaokai");
gc.setOpen(true);
gc.setFileOverride(true);
gc.setEntityName("%sEntity");
gc.setBaseResultMap(true);
gc.setBaseColumnList(true);
mpg.setGlobalConfig(gc);
//数据库配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/codinglife?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true");
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("root");
mpg.setDataSource(dataSourceConfig);
//包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.codinglife.manage");
pc.setEntity("domain.entity." + modelName);
pc.setService("service." + modelName);
pc.setServiceImpl("service.impl." + modelName);
pc.setMapper("dao.mapper." + modelName);
mpg.setPackageInfo(pc);
//设置自定义输出目录(分布式项目使用)
Map<String, String> pathInfo = new HashMap<>(5);
pathInfo.put(ConstVal.ENTITY_PATH, pojodir);
pathInfo.put(ConstVal.MAPPER_PATH, mapperdir);
pathInfo.put(ConstVal.XML_PATH, mapperxmldir);
pathInfo.put(ConstVal.SERVICE_PATH, servicedir);
pathInfo.put(ConstVal.SERVICE_IMPL_PATH, serviceImpldir);
pc.setPathInfo(pathInfo);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setSuperEntityClass(BaseEntity.class);
strategy.setSuperEntityColumns("id", "create_time", "update_time");
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setChainModel(false);
//是否支持Lombok
strategy.setEntityLombokModel(true);
strategy.setEntityTableFieldAnnotationEnable(false);
strategy.setTablePrefix("codinglife_manage_");
strategy.setInclude("codinglife_manage_user");
mpg.setStrategy(strategy);
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
final String templatePath = "/templates/mapper.xml.vm";
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return parentDir + "/src/main/resources/mapper/" + pc.getModuleName()
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
mpg.execute();
}
}