首先引入依赖pom依赖
org.springframework.boot spring-boot-starter-freemarker
com.baomidou mybatis-plus-generator3.4.1
代码如下
工具类
直接上代码
package com.zt.auth.generator;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.apache.commons.lang3.StringUtils;
import java.util.Scanner;
public class CodeGenerator {
private static final String DATA_SOURCE_URL = "";
private static final String DATA_SOURCE_USERNAME = "";
private static final String DATA_SOURCE_PASSWORD = "";
private static final String PACKAGE_NAME = "com.*";
private static final String ENTITY = "dao";
private static final String AUTHOR = "";
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotEmpty(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
AutoGenerator autoGenerator = new AutoGenerator();
//获取当前项目最外层的工作目录
String projectPath = System.getProperty("user.dir");
//全局配置
GlobalConfig gc = new GlobalConfig();
//输出目录(生成的文件会放到这个目录下)
gc.setOutputDir(projectPath)
//作者
.setAuthor(AUTHOR)
//是否覆盖已有文件
.setFileOverride(true)
//是否打开输出目录
.setOpen(false)
//开启 swagger2 模式
.setSwagger2(true)
//时间类型
//DateType.ONLY_DATE == java.util.Date;
//DateType.SQL_PACK == java.sql.Timestamp;;
//DateType.TIME_PACK == java.time.LocalDateTime;
.setDateType(DateType.TIME_PACK)
//生成resultMap
.setbaseResultMap(true)
//生成 columnList
.setbaseColumnList(true)
//主键策略
//IdType.AUTO == id自增
//IdType.NONE == 无状态,该类型为未设置主键类型
//IdType.INPUT == 手动添加
//IdType.ASSIGN_ID == 雪花算法
//IdType.ASSIGN_UUID == 分配UUID
.setIdType(IdType.AUTO)
//生成的service接口名字首字母是否为I,这样设置就没有
.setServiceName("%sService");
autoGenerator.setGlobalConfig(gc);
//数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl(DATA_SOURCE_URL)
.setDriverName("com.mysql.cj.jdbc.Driver")
.setUsername(DATA_SOURCE_USERNAME)
.setPassword(DATA_SOURCE_PASSWORD);
autoGenerator.setDataSource(dsc);
//包结构配置
PackageConfig pc = new PackageConfig();
//包路径
pc.setParent(PACKAGE_NAME);
//实体的包名名
pc.setEntity(ENTITY);
//设置模块名(包名)生成的代码会放在这里面
pc.setModuleName(null);
autoGenerator.setPackageInfo(pc);
//数据库表配置
StrategyConfig sc = new StrategyConfig();
//NamingStrategy.underline_to_camel == 字段驼峰命名
//NamingStrategy.no_change == 不做任何改变,原样输出
//文件名
sc.setNaming(NamingStrategy.underline_to_camel);
//字段名
sc.setColumnNaming(NamingStrategy.underline_to_camel);
//是否使用Lombok
sc.setEntityLombokModel(true);
//是否生成实体时,生成字段注解
sc.setEntityTableFieldAnnotationEnable(true);
//驼峰转连字符
sc.setControllerMappingHyphenStyle(true);
//生成 @RestController 控制器
sc.setRestControllerStyle(true);
//控制台输入表名
String tableName = scanner("输入表名 如 uc_test_table");
//表名
sc.setInclude(tableName);
//有表前缀,如果不想要前缀(放开下面方法)
// if (tableName.contains("_")){
// String prefex = tableName.substring(0,tableName.indexOf("_")+1);
// sc.setTablePrefix(prefex);
// }
//实现 ITypeConvert 接口自定义数据库 字段类型 转换为自己需要的 java 类型
dsc.setTypeConvert(new MySqlTypeConvert(){
@Override
public IColumnType processTypeConvert(GlobalConfig config, String fieldType) {
//将tinyint类型转换为java的Integer(默认是Boolean)
if(fieldType.toLowerCase().contains("tinyint")){
return DbColumnType.INTEGER;
}
return super.processTypeConvert(config, fieldType);
}
});
autoGenerator.setStrategy(sc);
//模板配置
TemplateConfig templateConfig = new TemplateConfig();
autoGenerator.setTemplate(templateConfig);
autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
//执行
autoGenerator.execute();
}
}
启动后在控制台输入需要生成的数据库表名:
输入表名回车,在你工作目录的根目录生成了文件:



