主要说明一下注意的几个点:
一、引入依赖的类库
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</dependency>
二、生成代码的一些方法
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/core/src/main/java");
gc.setAuthor("XXXX");
gc.setOpen(false);
gc.setControllerName("%sApi"); //其中%s是占位符
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://.....");
// dsc.setSchemaName("public");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("user"); //设置整个模块的名字
pc.setParent("com.xxx.autodao"); //这里设置的是所有自动生成的类所在的包名以及文件所在目录
mpg.setPackageInfo(pc);
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
String moduleName = "user";//这里是我自定义的一个变量,要传到模板方法里去
Map<String,Object> params = new HashMap<>();
params.put("module", moduleName); //加入到map里然后传进去
cfg.setMap(params);
//上面的设置就可以根据自带的模板来 生成相应的类和XML了
// 下面的配置可以根据自己的需求,生成一些自定义模板的代码
List<FileOutConfig> focList = new ArrayList<>();
//我要生成一个自定义的mapper.xml
focList.add(new FileOutConfig("/templates/mapper.xml.ftl") { //设置生成的模板
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输入文件名称
return projectPath + "/core/src/main/resources/mybatisplus/"//
+ tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; //配置生成的文件保存的目录
}
});
//我要生成一个自定义的Controller
focList.add(new FileOutConfig("/templates/t_controller.java.ftl") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输入文件名称
return projectPath + "/config-web/src/main/java/com/xxx/web/api/"//
+ tableInfo.getEntityName() + "Api" + StringPool.DOT_JAVA;
}
});
/***
* 输出list.html 生成HTML
*/
focList.add(new FileOutConfig("/templates/t_list.html.ftl") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输入文件名称
return projectPath + "/config-web/src//main/resources/static/pages/"//
+ params.get("module") + "/list.html";
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
mpg.setTemplate(new TemplateConfig().setXml(null));
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);
strategy.setInclude("表名"); //mysql里建的表名
// strategy.setSuperEntityColumns("id");
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
// 选择 freemarker 引擎需要指定如下加,注意 pom 依赖必须有!
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
需要注意的点
1、关于模板去哪里找例子
模板可以先看看自带的例子,从自带的例子里改,一看就能明白
所有自带的模板都在类库的templates文件夹下
三、贴一下我写的Controller的模板
import ${package.Service}.${table.serviceName};
import ${package.Entity}.${entity};
import com.xxx.web.response.AjaxVoResult;
import com.xxx.response.EmServiceErrorCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.List;
<#if restControllerStyle>
import org.springframework.web.bind.annotation.RestController;
<#else>
import org.springframework.stereotype.Controller;
</#if>
<#if superControllerClassPackage??>
import ${superControllerClassPackage};
</#if>
/**
* <p>
* ${table.comment!} 前端控制器
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if restControllerStyle>
@RestController
<#else>
@Controller
</#if>
@RequestMapping("/api/${cfg.module}")
<#if kotlin>
class ${table.controllerName}<#if superControllerClass??> : ${superControllerClass}()</#if>
<#else>
<#if superControllerClass??>
public class ${table.controllerName} extends ${superControllerClass} {
<#else>
public class ${table.controllerName} extends BaseApi{
</#if>
@Autowired
${table.serviceName} targetService;
@RequestMapping("/list")
public AjaxVoResult list(){
QueryWrapper<${entity}> qw = new QueryWrapper<>();
qw.setEntity(new ${entity}());
qw.eq("yn", 1);
List<${entity}> datas = targetService.list(qw);
if (!CollectionUtils.isEmpty(datas)) {
return new AjaxVoResult(EmServiceErrorCode.SUCCESS.getCode(), EmServiceErrorCode.SUCCESS.getMessage(), datas);
}
return new AjaxVoResult(EmServiceErrorCode.FAIL.getCode(), EmServiceErrorCode.FAIL.getMessage(), "");
}
@RequestMapping("/page")
public AjaxVoResult page(){
Page<${entity}> page = new Page<>(1, 5);
QueryWrapper<${entity}> qw = new QueryWrapper<>();
qw.setEntity(new ${entity}());
qw.eq("yn", 1);
IPage<${entity}> datas = targetService.page(page, qw);
if (datas != null) {
return new AjaxVoResult(EmServiceErrorCode.SUCCESS.getCode(), EmServiceErrorCode.SUCCESS.getMessage(), datas);
}
return new AjaxVoResult(EmServiceErrorCode.FAIL.getCode(), EmServiceErrorCode.FAIL.getMessage(), "");
}
@PostMapping("/add")
public AjaxVoResult add(${entity} data,HttpServletRequest request){
boolean response = false;
if(data != null){
data.setCreateOperator(getErp(request));
data.setUpdateOperator(getErp(request));
data.setCreateTime(LocalDateTime.now());
data.setUpdateTime(LocalDateTime.now());
data.setYn(1);
response = targetService.save(data);
}
if (response) {
return new AjaxVoResult(EmServiceErrorCode.SUCCESS.getCode(), EmServiceErrorCode.SUCCESS.getMessage(), response);
}
return new AjaxVoResult(EmServiceErrorCode.FAIL.getCode(), EmServiceErrorCode.FAIL.getMessage(), null);
}
@RequestMapping("/update")
public AjaxVoResult update(${entity} data,HttpServletRequest request){
boolean response = false;
if(data != null){
data.setUpdateOperator(getErp(request));
data.setUpdateTime(LocalDateTime.now());
response = targetService.updateById(data);
}
if (response) {
return new AjaxVoResult(EmServiceErrorCode.SUCCESS.getCode(), EmServiceErrorCode.SUCCESS.getMessage(), response);
}
return new AjaxVoResult(EmServiceErrorCode.FAIL.getCode(), EmServiceErrorCode.FAIL.getMessage(), null);
}
@RequestMapping("/del")
public AjaxVoResult del(${entity} data,HttpServletRequest request){
boolean response = false;
if(data != null && data.getId() > 0){
${entity} params = new ${entity}();
params.setId(data.getId());
params.setYn(0);
params.setUpdateOperator(getErp(request));
params.setUpdateTime(LocalDateTime.now());
response = targetService.updateById(params);
}
if (response) {
return new AjaxVoResult(EmServiceErrorCode.SUCCESS.getCode(), EmServiceErrorCode.SUCCESS.getMessage(), response);
}
return new AjaxVoResult(EmServiceErrorCode.FAIL.getCode(), EmServiceErrorCode.FAIL.getMessage(), null);
}
}
</#if>
网友评论