1 前言
MyBatis Plus starter
最近更新了 3.4.3.1
版本,而 MyBatis Plug Generator
更新到了 3.5.0
版本,然而官网文档还没有更新生成器的代码,另外在之前的文章里介绍过 MyBatis Plus
的应用,因而这里补上一篇文章联合 Spring Boot
介绍代码生成器的应用。
2 为什么须要代码生成器
应用代码生成器能够生成一些固定模板的代码,比方:
Controller
层代码Service
层代码mapper
- 实体类
比方一个 User
类能够生成如下代码:
3 环境
本次示例应用的环境如下:
Spring Boot 2.5.1
MyBaits Plus 3.4.3.1
MyBatis Plus Generator 3.5.0
4 筹备数据表
这里为了方便使用 Workbench
创立一个用户表User
:
5 创立我的项目并导入依赖
创立一个新的 Spring Boot
我的项目,而后导入如下依赖:
implementation 'com.baomidou:mybatis-plus-boot-starter:3.4.3.1'
implementation 'com.baomidou:mybatis-plus-generator:3.5.0'
implementation 'org.apache.velocity:velocity-engine-core:2.3'
implementation 'org.realityforge.org.jetbrains.annotations:org.jetbrains.annotations:1.7.0'
除了 starter
和generator
后,还须要一个模板引擎(可选Velocity
、Freemarker
、Beetl
,默认Velocity
)和一个注解依赖(jetbrains.annotations
)。
Maven
版本如下:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.realityforge.org.jetbrains.annotations</groupId>
<artifactId>org.jetbrains.annotations</artifactId>
<version>1.7.0</version>
</dependency>
6 新建一个生成器类
该类用于进行代码生成的配置:
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
public class MyBatisPlusGenerator {public static void main(String[] args) {DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder("jdbc:mysql://localhost:3306/test","root","123456").build();
String projectPath = System.getProperty("user.dir");
GlobalConfig globalConfig = new GlobalConfig.Builder().outputDir(projectPath+"/src/main/java").openDir(false).build();
PackageConfig packageConfig = new PackageConfig.Builder().moduleName("test").parent("com.example.test").build();
AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig);
autoGenerator.global(globalConfig).packageInfo(packageConfig);
autoGenerator.execute();}
}
代码生成器配置相比起之前的版本,应用了 Builder
模式代替了原来的 setter
模式:
DataSourceConfig dataSourceConfig = new DataSourceConfig(); // 3.5.0 版本中默认构造方法变成公有,无奈编译通过
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/ant?useUnicode=true&useSSL=false&characterEncoding=utf8");
dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("password");
下面的代码中设置了数据源、输入的代码门路以及输入的包名,依据须要进行批改即可:
DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder("jdbc:mysql://localhost:3306/test","root","123456").build();
String projectPath = System.getProperty("user.dir");
GlobalConfig globalConfig = new GlobalConfig.Builder().outputDir(projectPath+"/src/main/java").openDir(false).build();
PackageConfig packageConfig = new PackageConfig.Builder().moduleName("test").parent("com.example.test").build();
筹备好当前间接运行 main
,就会在src/main/java
下生成一个 test
文件夹:
7 测试运行
首先批改一下配置文件,增加数据源:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
批改 UserController
如下,增加一个测试方法:
@RestController
@RequestMapping("/test/user")
public class UserController {
@Resource
private UserServiceImpl userService;
@GetMapping("/")
public String test() {return userService.getById(1).toString();}
}
此时如果间接尝试运行 main
办法,会报错如下:
找不到 UserMapper
这个 Bean
,解决办法就是在UserMapper
加上一个 @Mapper
即可:
@Mapper
public interface UserMapper extends BaseMapper<User> {}
或者在 main
类加上一个 @MapperScan
,加上mapper
所在的全限定门路:
@SpringBootApplication
@MapperScan("com.example.test.test.mapper")
public class TestApplication {public static void main(String[] args) {SpringApplication.run(TestApplication.class, args);
}
}
这样拜访 localhost:8080/test/user/
就能够拜访到 id=1
的用户了:
8 其余配置
下面只是介绍了最简略的生成器配置,实际上残缺的代码生成器配置如下:
DataSourceConfig
:数据源配置,包含数据库类型、驱动、连贯URL
、用户名、明码等StrategyConfig
:数据库表配置(然而这个命名的确看不出来),能够指定对哪些表生成代码或者排除哪些表不生成代码,同时能够设置生成的字段前缀,还能够反对含糊匹配表名(排除或蕴含)等PackageConfig
:包配置,指定代码生成的模块名、包名、mapper
命名、service
命名、controller
命名等TemplateConfig
:模板配置,能够自定义生成的模板,包含实体类模板、service
模板、controller
模板、mapper
模板、mapper xml
模板等GlobalConfig
:全局配置,能够指定输入的代码目录、是否覆盖文件等配置,同时反对Kotlin
和Swagger2
InjectionConfig
:注入配置,能够自定义配置Map
对象等
具体请查看官网文档。
9 源码
参考源码,Java
版:
- Github
- 码云
10 参考链接
- MyBatis Plus 官网文档