一、引入依赖
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!-- mybatis-plus代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
二、生成代码
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/*
#代码生成器
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
特别说明:
自定义模板有哪些可用参数?Github Gitee AbstractTemplateEngine 类中方法 getObjectMap 返回 objectMap 的所有值都可用。
演示效果图:
relationship
*/
// 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
/**
* 1 gc.setAuthor("zxl"); // 设置作者
* 2 gc.setIdType(IdType.ID_WORKER_STR); // 主键策略
* 3 dsc.setUrl("jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC");
* 4 dsc.setUsername("root") // 数据库用户名
* 5 dsc.setPassword("root") // 数据库密码
* 6 pc.setModuleName("edu"); // 设置模块名
* 7 pc.setParent("com.demos"); // 设置包名
* 8 strategy.setInclude("tb"+"_\\w*"); // 映射的表名:tb开头的
*/
public class CodeGenerator {
public static void main(String[] args) {
// 1、代码生成器
AutoGenerator mpg = new AutoGenerator();
// 2、全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir"); // 获取当前项目路径
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("zxl"); // 设置作者
gc.setOpen(false); // 生成后是否打开资源管理器
gc.setFileOverride(true); // 重新生成文件的时候是否会覆盖
// gc.setIdType(IdType.AUTO); // 主键策略
gc.setIdType(IdType.ID_WORKER_STR); // 主键策略
gc.setServiceName("%sService"); // 所有自动生成的Service接口首字母I去掉
gc.setDateType(DateType.ONLY_DATE); // 设置日期类型
gc.setSwagger2(true); //实体属性 Swagger2 注解
mpg.setGlobalConfig(gc);
// 3、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC");
// dsc.setSchemaName("public");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root"); // 数据库用户名
dsc.setPassword("root"); // 数据库密码
dsc.setDbType(DbType.MYSQL); // 设置数据源类型
mpg.setDataSource(dsc);
// 4、包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("dao"); // 设置模块名
pc.setParent("com.XXX.XXX"); // 设置包名
pc.setEntity("entity"); // 设置实体类包名
pc.setController("controller"); // 设置controller包名
pc.setMapper("mapper"); // 设置mapper包名
pc.setService("service"); // 设置service包名
mpg.setPackageInfo(pc);
// 5、策略配置
StrategyConfig strategy = new StrategyConfig();
// 不设置生成所有表
// strategy.setInclude("sys"+"_\\w*"); // 映射的表名:tb开头的
strategy.setInclude("tb"+"_\\w*"); // 映射的表名:tb开头的
strategy.setNaming(NamingStrategy.underline_to_camel);//数据映射到实体类的策略:驼峰
strategy.setTablePrefix("tb" + "_");//不生成表前缀
// strategy.setTablePrefix(pc.getModuleName() + "_");//不生成表前缀
strategy.setEntityLombokModel(true);// 自动添加lombok的注解
// 逻辑删除
// strategy.setLogicDeleteFieldName("is_deleted"); // 逻辑删除字段
// strategy.setEntityBooleanColumnRemoveIsPrefix(true);//去除布尔值is_前缀
// 自动填充
// TableField gmt_create = new TableField("gmt_create", FieldFill.INSERT);
// TableField gmt_update = new TableField("gmt_update", FieldFill.INSERT_UPDATE);
// ArrayList<Object> tableFields = new ArrayList<>();
// tableFields.add(gmt_create);
// tableFields.add(gmt_update);
// strategy.setTableFillList(tableFields);
// 乐观锁字段
strategy.setVersionFieldName("version");
//RestFul
strategy.setRestControllerStyle(true);
mpg.setStrategy(strategy);
mpg.execute();
}
}