1.导入pom依赖
<!-- 代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
2.创建一个类使用main方法运行代码生成器代码(关键地方我写了注解 其他功能参考官方文档)
官方配置如下:https://baomidou/pages/779a6e/#%E4%BD%BF%E7%94%A8
package com.pzh.vue.utils;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import java.util.Collections;
/**
* 代码生成器
* @since 2022-03-21
*/
public class MP {
public static void main(String[] args) {
generate();
}
private static void generate(){
FastAutoGenerator.create("jdbc:mysql://localhost:3306/xia?serverTimezone=UTC", "root", "123456")
.globalConfig(builder -> {
builder.author("xzh") // 设置作者
/*.enableSwagger() */// 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("E:\\springboot\\test\\vue\\src\\main\\java\\"); // 指定输出目录 和自己项目src一一对应
})
.packageConfig(builder -> {
builder.parent("com.pzh.vue") // 设置父包名
.moduleName(null) // 设置父包模块名 解决路径冲突
.serviceImpl("service.imp") //自定义包名imp 官方的是impi
.entity("pojo") //设置实体包为pojo
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, "E:\\springboot\\test\\vue\\src\\main\\resources\\mappers")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.entityBuilder().enableLombok();//使用lombok
builder.controllerBuilder().enableHyphenStyle()
.enableRestStyle();//开启RestController
builder.addInclude("sys_role") // 设置需要生成的表名
.addTablePrefix("t_", "sys_"); // 设置过滤表前缀
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
3.如有需要可以改写官方模板VM 需要找到模板并且复制到 templates
4.更改vm内容(要点:更改所有活的目录)
(1)包名 import ${package.Entity}.${entity};
解释: ${package.Entity} = com.pzh.pojo 指你的实体路径(官方默认entity)
${entity} = user 指实体
import ${package.Service}.${table.serviceName};
(2)注入service
@Autowired private ${table.serviceName} ${table.entityPath}Service;
解释:${table.entityPath}Service 代表自定义对象的拼接 (如 实体是User)
这里结果就是userService
(3)代码写在最后一个#end上面
下面是我的代码 可以参考:
package ${package.Controller};
import org.springframework.web.bind.annotation.RequestMapping;
//这里是动态的包
import ${package.Entity}.${entity};
import ${package.Service}.${table.serviceName};
//*******************缺什么包加什么*************************//
#if(${restControllerStyle})
import org.springframework.web.bind.annotation.RestController;
#else
import org.springframework.stereotype.Controller;
#end
#if(${superControllerClassPackage})
import ${superControllerClassPackage};
#end
/**
* <p>
* $!{tablement} 前端控制器
* </p>
*
* @author ${author}
* @since ${date}
*/
#if(${restControllerStyle})
@RestController
#else
@Controller
#end
@RequestMapping("#if(${package.ModuleName})/${package.ModuleName}#end/#if(${controllerMappingHyphenStyle})${controllerMappingHyphen}#else${table.entityPath}#end")
#if(${kotlin})
class ${table.controllerName}#if(${superControllerClass}) : ${superControllerClass}()#end
#else
#if(${superControllerClass})
public class ${table.controllerName} extends ${superControllerClass} {
#else
public class ${table.controllerName} {
#end
//这里加你的控制层的代码
@Autowired
private ${table.serviceName} ${table.entityPath}Service;
@GetMapping
public Result findAll(){
List<${entity}> list = ${table.entityPath}Service.list();
Result result=new Result();
result.setStatus(200);
result.setData(list);
return result;
}
}
#end
5.运行代码生成器(注意更改你需要生成类的表名 和数据库表对应)
更多推荐
Mybatis-plus 代码生成器使用官方VM模板生成代码(极简)
发布评论