Mybatis-Plus代码生成器
一、概念
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
MyBatis-Plus代码生成器:https://mp.baomidou.com/guide/generator.html
详细配置细节:https://mp.baomidou.com/config/generator-config.html#datasource
其实在学习mybatis的时候我们就使用过逆向工程,根据我们的数据表来生成的对应的实体类,DAO接口和Mapper映射文件,而MyBatis-plus提供了更加完善的功能,下面来针对两种方式做一个基本的对比:
- MyBatis-plus是根据java代码开生成代码的,而Mybatis是根据XML文件的配置来生成的
- MyBatis-plus能够生成实体类、Mapper接口、Mapper映射文件,Service层,Controller层,而Mybatis只能生成实体类,Mapper接口,Mapper映射文件
二、环境搭建
1、添加依赖
如果你使用过Mybatis的逆向工程,应该知道我们在使用逆向工程的时候,需要额外导入pom依赖支持。
Mybatis-Plus代码生成器同样不例外,在基本的Mybatis-Plus的环境依赖之外,也需要额外引入pom依赖支持。
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mybatis_plus_generator_0703</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.3.1</version>
</dependency>
<!--其他的与平时没什么区别,主要是添加这个mybatis-plus的支持-->
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>3.1.1.RELEASE</version>
</dependency>
补充:三者选一即可
2、编写生成类(启动器)
如果你使用过Mybatis的逆向工程,应该记得我们把所有的配置配好之后,也需要一个启动类来让逆向工程生成代码,这个类一般不手写,基本上都是从官网粘贴,然后对照自己项目路径进行配置即可。
TestGenerator.class
package com.mjt;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class TestGenerator {
public static void main(String[] args) {
//此处默认有两个对应的实现类,大家不要导错包,要导入generator相关的包
GlobalConfig globalConfig = new GlobalConfig();
//设置全局的配置
globalConfig.setActiveRecord(true)//是否支持AR模式
.setAuthor("mjt")//设置作者
.setOutputDir("D:\\idea-workspace\\mybatis_plus_generator_0703\\src\\main\\java")//设置生成路径,设置你项目本地路径
.setFileOverride(true)//设置文件覆盖
.setIdType(IdType.AUTO) //设置主键生成策略
.setServiceName("%sService")//设置生成的service接口的名字
.setControllerName("%sController")
.setBaseResultMap(true) //设置基本的结果集映射
.setBaseColumnList(true);//设置基本的列集合
//设置数据源的配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver")
.setUrl("jdbc:mysql://localhost:3306/demo?serverTimezone=UTC")
.setUsername("root").setPassword("123456");
// 进行策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setCapitalMode(true)//设置全局大写命名
.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
// 进行自动生成的包名的策略配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.mjt")
.setMapper("mapper")
.setService("service")
.setController("controller")
.setEntity("bean")
.setXml("mapper");
//整合配置
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setGlobalConfig(globalConfig).setDataSource(dataSourceConfig).setStrategy(strategyConfig)
.setPackageInfo(packageConfig);
autoGenerator.execute();
}
}
上面的配置可以当成一个简单的模板,需要的时候可以直接拿来用,针对项目路径进行修改即可
以上的启动类基本上能够当成一个模板来使用,如果自己的项目需要额外别的功能,去官网查找怎么配置即可
下面是有些需要改动的地方:
1、查找项目路径
2、复制路径
3、粘贴路径
4、生成结果
三、总结
懒人推动社会发展!!
我们可以发现使用Mybatis-Plus代码生成器是要比Mybatis的逆向工程功能强大的多,用起来更加舒服。我们使用Mybatis-Plus很多情况下就是为了使用代码生成器的。
大胆的拥抱代码生成器吧