自己开发项目MP这个框架是很常用的,它的插件自动生成代码用起来效率也很高,但是第一次使用配置还是会睬很多坑,现在来记录一下使用过程。
-
项目结构
为了不影响其他模块,为自动生成器新建一个stray-plugins Maven模块。
- POM文件
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
</dependencies>
其实生成代码只需要这两个依赖就行了
-
生成器主类
自己对它原来的示例代码改变了一下,生成出来的代码剪切粘贴到别的模块下就可以使用了。
package com.nothing.plugins;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
/**
* 代码生成器
*/
public class MybatisPlusGenerator {
/**
* 执行 run
*/
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
System.out.println("输入表名,空格隔开");
String[] input = scanner.nextLine().split(" ");
ArrayList<String> target = new ArrayList<>();
for (String s : input) target.add(s);
generate(target);
}
private static void generate(List<String> targets){
FastAutoGenerator.create("jdbc:mysql://localhost:3306/stray_home?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai",
"root", "20001030") //数据库连接配置
.globalConfig(builder -> {
builder.author("zhuhodor") //作者
.enableSwagger() //开启swagger注解
.fileOverride()
.commentDate("yyyy-MM-dd")
.outputDir(System.getProperty("user.dir")+"\\stray-plugins\\src\\main\\java");
})
.packageConfig(builder -> {//生成文件夹位置配置
builder.parent("com.nothing")
.moduleName("plugins")
.entity("model")
.service("service")
.serviceImpl("service.impl")
.controller("controller")
.mapper("mapper")
.xml("mapper")
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir")+"\stray-plugins\src\main\resources\mapper"));
})
.strategyConfig(builder -> {
builder.addInclude(targets)
.addTablePrefix("s_") //表前缀
.serviceBuilder()
.formatServiceFileName("I%sService")
.formatServiceImplFileName("%sServiceImpl")
.entityBuilder()
.enableLombok()
.logicDeleteColumnName("deleted") //逻辑删除列
.enableTableFieldAnnotation()
.controllerBuilder()
.formatFileName("%sController")
.enableRestStyle()
.mapperBuilder()
.formatMapperFileName("%sMapper")
.enableMapperAnnotation()
.formatXmlFileName("%sMapper");
})
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
}
-
成功
注意
System.getProperty(“user.dir”)这个路径代表的是工程根目录,知道这点生成的代码就不会乱跑了。
版权声明:本文为qq_44025894原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。