代码生成器 generator的使用
适用版本:mybatis-plus-generator 3.5.1 及其以上版本,由于生成器代码不需要提交维护,代码放在test包下面即可
1、引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
方式一
2、在test类中执行以下代码快速生成
FastAutoGenerator.create("url", "username", "password") //写需要生成的数据库的信息
.globalConfig(builder -> {
builder.author("baomidou") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("D://"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.baomidou.mybatisplus") // 设置父包名,就是生成后的类的包名字
.moduleName("system") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("t_simple") // 设置需要生成的表名
.addTablePrefix("t_", "c_"); // 设置过滤表前缀 ,这些不需要这是注掉
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
方式二、设置好对应信息在生成
public class CodeGenerator {
@Test
public void genCode() {
// 1、创建代码生成器
AutoGenerator mpg = new AutoGenerator();
// 2、全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir"); //获取该项目的全路径
gc.setOutputDir(projectPath + "/src/main/java");//设置生成后存放的路径
gc.setAuthor("Helen");//设置作者
gc.setOpen(false); //生成后是否打开资源管理器
gc.setServiceName("%sService"); //去掉Service接口的首字母I
gc.setIdType(IdType.AUTO); //主键策略 ,在生成的对象所有的id属性都会加上 @TableId(value = "id", type = IdType.AUTO)注解,主键自增
gc.setSwagger2(true);//开启Swagger2模式,自动生成接口文档,使用必须引入依赖下面的依赖,生成时每个属性都会有 @ApiModelProperty(value = "编号")这样的注解 会把创建表时的字段注释拿过来,这样可以清楚知道每个字段对应的意思
mpg.setGlobalConfig(gc);
// 3、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/数据库库名?serverTimezone=GMT%2B8&characterEncoding=utf-8");//后面两个参数分别是设置时区和字符集
dsc.setDriverName("com.mysql.cj.jdbc.Driver");//设置jdbc驱动,mysql8以下是com.mysql.jdbc.Drive,mysql8以上是com.mysql.cj.jdbc.Driver
dsc.setUsername("root");//数据库username
dsc.setPassword("123456");//数据库password
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
// 4、包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.srb.core");
pc.setEntity("pojo.entity"); //此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
mpg.setPackageInfo(pc);
// 5、策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略,由下划线命名改为驼峰命名
strategy.setColumnNaming(NamingStrategy.underline_to_camel); //列名下划线转驼峰命名
strategy.setEntityLombokModel(true); //给所有的实体类加lombok注解,不自动生成get和set,但加上了@Data注解,会在编译的时候自动生成get和set
strategy.setLogicDeleteFieldName("is_deleted"); //逻辑删除字段名,给逻辑删除字段加逻辑注解 @logicDelete
strategy.setEntityBooleanColumnRemoveIsPrefix(true); //去掉is_前缀,阿里的开发文档规定属性名不要以is开头
strategy.setRestControllerStyle(true); //restful api风格,返回json的
mpg.setStrategy(strategy);
//6执行
mpg.execute();}
}
使用swagger需要引入的依赖
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<!--swagger ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>