Mybatis-plus代码生成器
首先引入依赖pom依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version> </dependency>
代码如下
工具类
直接上代码
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; /** * 代码生成器 * 可以将该文件设为 git 忽略 **/ 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 = ""; /** * 为了用起来更方便,表名在控制台输入 * @param tip 表名 * @return */ 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(); } }
启动后在控制台输入需要生成的数据库表名:
输入表名回车,神奇的事情发生了,在你工作目录的根目录生成了文件:
如果工具类不符合要求需要调整:可以看看官网的配置(官网)