一、maven引入
<!-- mysql数据库连接 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.27</version>
</dependency>
<!-- mybatis-spring-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<!-- mybatis-plus代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.0</version>
</dependency>
<!-- velocity模板引擎,用于mybatis-plus代码生成器 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
二、低代码生成器
package com.example.demo.utils;
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.NamingStrategy;
/**
* 低代码生成器
*/
public class GenerateCode {
/**
* 生成代码的输出模块
*/
private final static String MODULE = "generate";
/**
* 需要自动生成代码的表名,用【,】分隔
*/
private final static String TABLE_NAME = "表1,表2";
public static void main(String[] args) {
// 代码生成器
AutoGenerator ag = new AutoGenerator();
// 1、全局配置
GlobalConfig gc = new GlobalConfig();
// 项目根目录
String projectPath = System.getProperty("user.dir");
// 生成代码的输出目录:一般这个就是固定的,这里不用写到具体的哪个包,因为下面会单独配置包名
gc.setOutputDir(projectPath + "/src/main/java");
// 生成代码的author
gc.setAuthor("test");
// 生成代码后,是否自动打开生成的目录:这里我们不需要,因为就是生成到当前项目
gc.setOpen(false);
// 去掉Service的I前缀
gc.setServiceName("%Service");
// 设置全局配置
ag.setGlobalConfig(gc);
// 2、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://xxxx?characterEncoding=UTF-8&autoReconnect=true");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("xxx");
dsc.setPassword("xxx");
ag.setDataSource(dsc);
// 3、包的配置
PackageConfig pc = new PackageConfig();
// 设置包名:和上面的输出目录进行拼接(ourDir+parent)
pc.setParent("com.example");
// 检测命令行输入的模块名:和上面的包名进行拼接(outDir+parent+moduleName),生成代码都会放到这个模块下
pc.setModuleName("demo");
ag.setPackageInfo(pc);
// 4、策略配置
StrategyConfig sc = new StrategyConfig();
// 自动生成的实体类的命名:数据库映射到实体类,下划线转驼峰
sc.setNaming(NamingStrategy.underline_to_camel);
// 这里如果不设置,会跟随上面实体类的命名设置
sc.setColumnNaming(NamingStrategy.underline_to_camel);
// 字段注解:这里我们把表字段的注解打开,比如@TableField("car_name")
sc.setEntityTableFieldAnnotationEnable(true);
// 实体类的父类:如果有就配置,记得加包名
sc.setSuperEntityClass("com.example.demo.base.BaseEntity");
// 映射类的父类:如果有就配置,记得加包名
sc.setSuperMapperClass("com.baomidou.mybatisplus.core.mapper.BaseMapper");
// 服务接口的父类:如果有就配置,记得加包名
sc.setSuperServiceClass("com.example.demo.base.IService");
// 服务实现类的父类:如果有就配置,记得加包名
sc.setSuperServiceImplClass("com.example.demo.base.ServiceImpl");
// 控制器类的父类:如果有就配置,记得加包名
sc.setSuperControllerClass("com.example.demo.base.BaseController");
// lombok:是否开启Lombok的注解,比如@Data,@EqualsAndHashCode(callSuper = true)
sc.setEntityLombokModel(true);
// 控制器的@RestController注解:是否开启,不开启则默认为@Controller
sc.setRestControllerStyle(true);
// 监测命令行的输入:表名
sc.setInclude(TABLE_NAME.split(","));
// 控制器的请求映射url风格:驼峰转连字符,比如"carList"-> "car-list"
sc.setControllerMappingHyphenStyle(true);
// 设置表的前缀:设置后,生成的类名和Controller的请求映射中就不会包含表前缀
// 设置后为 @RequestMapping("/gps/car"),而不是@RequestMapping("/gps/gps-car")
// 类名同理
sc.setTablePrefix();
ag.setStrategy(sc);
ag.execute();
}
}
三、可以自行定义base包,里面定义好controller、service需要继承的父接口
四、运行 GenerateCode类的main方法会自行生成数据库中表对应的实体类、mapper、service和controller