Mybatis-Plus
1、代码生成器(新)
导入相关依赖。
依赖:
<!-- mybatis-plus 生成器 --> <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> <!-- Velocity 引擎 --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency>
版本 3.5.1 以后。将以下代码放入可执行类中。
FastAutoGenerator.create("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai", "xiaosun", "123456")
.globalConfig(builder -> {
builder.author("changzhi") // 设置作者
// .enableSwagger() // 开启 swagger 模式
.outputDir("D:\\W_Disk\\learn_workspace\\spring-boot-starter-master\\mybatis-spring-boot-samples\\mybatis-plus-boot\\src\\main\\java"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.changzhi") // 设置父包名
.moduleName("mybatisplus") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\W_Disk\\learn_workspace\\spring-boot-starter-master\\mybatis-spring-boot-samples\\mybatis-plus-boot\\src\\main\\resources\\mybatis\\mapper")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("blog") // 设置需要生成的表名
.addTablePrefix("t_", "c_"); // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
2、生成代码部分优化
由于官方给我们的样例生成代码比较简洁,需要我们根据实际情况手动修改相关参数,因此,我对其做了简单封装,以达到使用少量且容易的参数配置,来快速生成文件。
Note:
-
该场景以本人常用的 Intellij IDEA 常见目录结构为目标,生成相关文件。
-
请将该类放在与 SpringBoot 启动类同级目录下。
-
执行该类,将会在boot 启动类所在目录下生成 entity、mapper、controller、service包及文件;xml 映射文件生成在 resource/mybatis/mapper 下。
完整类代码如下:
package com.changzhi.mybatisplus;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class MybatisPlusGeneratorUtil {
// 数据源
private final static String url = "jdbc:mysql://localhost:3306/mybatis?useSSL=false&charactorEncode=UTF-8&serverTimezone=Asia/Shanghai";
private final static String username = "xiaosun";
private final static String password = "123456";
public static void main(String[] args) {
// mybatisPlusGenerator();
mybatisPlusGeneratorByReaction();
}
/**
* mybatisplus generator(快速自动生成)
*/
public static void mybatisPlusGenerator() {
FastAutoGenerator.create(url, username, password)
.globalConfig(builder -> {
builder.author("changZhi") // 设置作者
// .enableSwagger() // 开启 swagger 模式
.outputDir(getOutputDir()); // 指定输出目录
})
.packageConfig(builder -> {
builder
.parent(getParentPackage()) // 设置父包名
// .moduleName("") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, getMapperXmlPath())); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("blog"); // 设置需要生成的表名
// .addTablePrefix("t_", "c_"); // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
/**
* 交互式生成
*/
public static void mybatisPlusGeneratorByReaction(){
FastAutoGenerator.create(url, username, password)
// 全局配置
.globalConfig((scanner, builder) -> {
builder.author(scanner.apply("请输入作者名称?"))
.outputDir(getOutputDir());
})
// 包配置
.packageConfig(builder -> {
builder.parent(getParentPackage())
.pathInfo(Collections.singletonMap(OutputFile.xml, getMapperXmlPath()));
})
// 策略配置
.strategyConfig(builder -> {
Scanner scanner = new Scanner(System.in);
List<String> tables = new ArrayList<>();
System.out.println("请输入表名, 一行表示一个,以 “end“ 表示结束!");
while (scanner.hasNextLine()){
String str = scanner.nextLine();
if (str.equals("end")){
break;
}
tables.add(str);
}
builder.addInclude(tables);
})
.templateEngine(new FreemarkerTemplateEngine())
/*
模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker 或 Enjoy
.templateEngine(new BeetlTemplateEngine())
.templateEngine(new EnjoyTemplateEngine())
*/
.execute();
}
/**
* 获取 xml 映射文件存放目录( resources/mybatis/mapper )
* @return
*/
public static String getMapperXmlPath(){
return System.getProperty("user.dir") + "\\src\\main\\resources\\mybatis\\mapper";
}
/**
* 获取 main/java 目录
* @return
*/
public static String getOutputDir(){
return System.getProperty("user.dir") + "\\src\\main\\java";
}
/**
* 获取执行类的包目录
* @return
*/
public static String getParentPackage(){
return MybatisPlusGeneratorUtil.class.getPackage().getName();
}
}
希望以上分享能够帮助到各位友友,不要忘记点个赞鼓励一下哦!!!