SpringBoot如何使用Mybatisplus(3.5.2版本)代码生成器
1. pom.xml引入依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<!--代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
2.代码生成器源代码(连接数据的2种方式)
2.1 直接使用字符串链接数据库:
@Test
void contextLoads() {
String url="jdbc:postgresql://xxx.xxx.xx.x:5432/xxxxx?useUnicode=true&characterEncoding=utf-8";
String username="xxxxxx";
String password="xxxxxxx";
FastAutoGenerator.create(url,username,password)
// FastAutoGenerator.create(url,username,password)
.globalConfig(builder -> {
builder.author("lizhiyong") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("D:\\xxxx"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("mybatis") // 设置父包名
.moduleName("mybatisp") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\xxxx\\mapper")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("tb_identity"); // 设置需要生成的表名; // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
Tips:如果有连接信息报错(java.sql.SQLException: No suitable driver found for dbc:postgresql:等错误),尝试以下代码:
2.2 使用Spring自动注入的dataSource连接数据库。:
2.2.1 首先application.yml中的配置(配置自己的数据库,我这里用的是postgres):
spring:
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://124.xxx.xx.xx:5432/studywww?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&socketTimeout=5000
username: postgres
password: 'xxx'
2.2.12代码生成器代码:
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
import java.util.Collections;
//这里使用的SpringBoot配置文件application.yml的DataSource配置文件的dataSource
@Autowired
DataSource dataSource;
@Test
void contextLoads() {
//使用上面自动注入的dataSource创建FastAutoGenerator
FastAutoGenerator.create(new DataSourceConfig.Builder(dataSource))
//如果使用这种方式,会报错:java.sql.SQLException: No suitable driver found for dbc:
//FastAutoGenerator.create(url,username,password)
.globalConfig(builder -> {
builder.author("lizhiyong") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("D:\\xxxx"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.lzy.studywww") // 设置父包名
.moduleName("mybatisp") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\xxxx\\mapper")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("class_url_map","class_info","operate_log","order","user_info"); // 设置需要生成的表名; // 设置过滤表前缀
})
//这里可能会报错找不到Freemarker类,就需要引入下面的pom.xml的freemarker引擎
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
补充:代码生成器路径对应图:
如果遇到如下报错:
java.lang.NoClassDefFoundError: freemarker/template/Configuration
at com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine.init(FreemarkerTemplateEngine.java:41)
at com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine.init(FreemarkerTemplateEngine.java:36)
at com.baomidou.mybatisplus.generator.AutoGenerator.execute(AutoGenerator.java:179)
at com.baomidou.mybatisplus.generator.FastAutoGenerator.execute(FastAutoGenerator.java:213)
at org.lzy.web.TestStart.contextLoads(TestStart.java:95)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at
引入pom.xml:
版本号可以不写
<!--代码生成器的freemarker引擎-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>