前言
mybatis-plus代码生成器是一个工具类,它可以根据数据库表的结构,自动创建对应的entity实体类、controller控制层、service接口、mapper接口和mapper.xml文件。这样可以节省开发者的时间和精力,mybatis-plus代码生成器的使用步骤如下:
-
项目配置:
- JDK:22
- SpringBoot:3.3.1
- MyBatis-Plus:3.5.7
一、添加代码生成器依赖
- 在pom.xml文件中导入以下依赖:
<!--====================== 代码生成 ===========================-->
<!-- MyBatis-Plus代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.7</version>
</dependency>
<!-- freemarker模板引擎 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.33</version>
</dependency>
二、创建代码生成器主类
- 在test测试文件中创建CodeGenerator包,在其中新建一个配置类
参考文档: MyBatis-Plus代码生成器
package com.blog.patrick.CodeGenerator;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.Collections;
/**
* <p>
* MyBatis-Plus代码生成器
* </p>
*
* @author Patrick
* @since 2024-07-02
*/
public class CodeGenerator {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/******?serverTimezone=Asia/Shanghai", "******", "******")
//~~~~~~~~~~~~~~~Part1: 全局配置~~~~~~~~~~开始~~~~~~~~~~
.globalConfig((scanner, builder) -> {
builder.author("Patrick") // 设置作者
//.enableSwagger() // 开启 swagger 模式
.outputDir(System.getProperty("user.dir") + "/src/main/java")
.commentDate("yyyy-MM-dd")
.disableOpenDir(); //禁止打开文件目录,默认false
})
//~~~~~~~~~~~~~~~全局配置~~~~~~~~~~结束~~~~~~~~~~
//~~~~~~~~~~~~~~~Part2: 包配置~~~~~~~~~~开始~~~~~~~~~~
.packageConfig((scanner, builder) -> {
builder.parent("com.blog.patrick")
.moduleName(null)
.entity("entity")
.service("service")
.serviceImpl("service.impl")
.mapper("mapper")
.xml("mapper.xml")
.controller("controller")
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mapper"));
})
//~~~~~~~~~~~~~~~包配置~~~~~~~~~~结束~~~~~~~~~~
//~~~~~~~~~~~~~~~Part3: 策略配置~~~~~~~~~~开始~~~~~~~~~~
.strategyConfig((scanner, builder) -> builder
.addInclude("t_user") // 设置需要生成的表名
.addTablePrefix("t_") // 设置过滤表前缀
/**
* 实体配置
*/
.entityBuilder()
//.superClass(SuperCommomPO.class) // 设置实体类父类-父类中存在的字段不会在实体类中存在
.enableLombok()
.naming(NamingStrategy.underline_to_camel)// 数据表映射实体命名策略:默认下划线转驼峰underline_to_camel
.columnNaming(NamingStrategy.underline_to_camel)// 表字段映射实体属性命名规则:默认null,不指定按照naming执行
//.idType(IdType.AUTO)// 添加全局主键类型
.formatFileName("%s")// 格式化实体名称,%s取消首字母I,
/**
* mapper配置
*/
.mapperBuilder()
//.enableMapperAnnotation()// 开启mapper注解
.enableBaseResultMap()// 启用xml文件中的BaseResultMap 生成
//.enableBaseColumnList()// 启用xml文件中的BaseColumnList
.formatMapperFileName("%sMapper")// 格式化Mapper类名称
.formatXmlFileName("%sMapper")// 格式化xml文件名称
/**
* service配置
*/
.serviceBuilder()
.formatServiceFileName("%sService")// 格式化 service 接口文件名称
.formatServiceImplFileName("%sServiceImpl")// 格式化 service 接口文件名称
.controllerBuilder()
.enableRestStyle()
//~~~~~~~~~~~~~~~策略配置~~~~~~~~~~结束~~~~~~~~~~
.build())
// 使用Freemarker引擎模板,默认的是Velocity引擎模板
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
}