惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
V
Visual Studio Blog
雷峰网
雷峰网
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog RSS Feed
C
Check Point Blog
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
D
Docker
IT之家
IT之家
博客园 - 聂微东
腾讯CDC
U
Unit 42
Microsoft Security Blog
Microsoft Security Blog
The Cloudflare Blog

Lanke

Google 账号地区是日本,ChatGPT 订阅为什么还是美元? 在 Flutter 项目里折腾苹果的液态玻璃效果 从“宅斗庶女”看极端女权 一期一会 关于梦 用 Vercel AI Gateway 给博客做一个 AI 摘要服务 Claude 搜索网页报错:Unable to verify if domain is safe to fetch 的解决方法 Flutter输入面板布局优化:键盘、表情面板与@联想的丝滑切换 再谈语言和思维 还有人记得 在2026年拥有自己的博客 为 Astro 博客添加 llms.txt 使用 LLM Wiki 作为 Hermes Agent 的记忆系统 使用Obsidian 作为 Hermes Agent 的记忆数据库 流畅的下滑关闭页面 遇到的一起生产事故 好看的鼠标样式 拖了很久的更新,还是来了 Linux · 常用日志查询命令 面试 · Java面试二 面试 · Java面试一 如何实现验证码及校验 在电脑上共存MySQL 三道前端题 「随便来点」失语症 一些碰到的面试问题 关于博客主题的自问自答 重装电脑后恢复MySQL数据 如何畅玩旮旯game之软件篇--串流 欢迎来到实力至上主义教室
使用mybatis-plus代码生成器快速构建springboot项目
Lanke · 2025-03-22 · via Lanke

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

配置

首先你的项目里需要有这三个依赖

xml

	<!-- freemarker -->
   <dependency>
       <groupId>org.freemarker</groupId>
       <artifactId>freemarker</artifactId>
   </dependency>
   <!-- mybatis-plus -->
   <dependency>
       <groupId>com.baomidou</groupId>
       <artifactId>mybatis-plus-boot-starter</artifactId>
   </dependency>
   <dependency>
       <groupId>com.baomidou</groupId>
       <artifactId>mybatis-plus-generator</artifactId>
   </dependency>
   <!-- 以下应该也需要 -->
    <!-- web -->
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
   </dependency>

编写代码生成器

src/test/java 路径下新建一个 AutoCodeGenerator

java

// src/test/java
public class AutoCodeGenerator {
    public static void main(String[] args) {
        String url = "jdbc:mysql:///数据库名";
        String username = "root";
        String password = "root";
        String author = "lanke";
        String outputDir = "src\\main\\java";
        String basePackage = "com.lanke";
        String moduleName = "sys";
        String mapperLocation = "src\\main\\resources\\mapper\\" + moduleName;
        String tableName = "articles,users";
        String tablePrefix = "";
        FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> {
                    builder.author(author) // 设置作者
                            //.enableSwagger() // 开启 swagger 模式
                            //.fileOverride() // 覆盖已生成文件
                            .outputDir(outputDir); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent(basePackage) // 设置父包名
                            .moduleName(moduleName) // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, mapperLocation)); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(tableName) // 设置需要生成的表名
                            .addTablePrefix(tablePrefix); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}

根据自己的实际情况修改参数,然后运行即可

修改 swagger 模式

swagger 2 已经不支持 vue 3 了,因此你要是启用自带的 swagger 在代码里会直接报错

为了让 MyBatis-Plus 代码生成器默认生成 OpenAPI3(原 Swagger3)注解,你需要 自定义模板 并调整生成配置。以下是详细步骤:


步骤一:创建自定义模板

  1. resources 目录下新建模板文件夹:

    text

    src/main/resources/templates/
  2. 创建自定义实体模板文件 entity.java.ftl,内容如下:

java

package ${package.Entity};

<#list table.importPackages as pkg>
import ${pkg};
</#list>
<#if swagger>
import io.swagger.v3.oas.annotations.media.Schema;
</#if>
<#if entityLombokModel>
import lombok.Data;
import lombok.EqualsAndHashCode;
</#if>

/**
 * <p>
 * ${table.comment!}
 * </p>
 */
<#if entityLombokModel>
@Data
<#if superEntityClass??>
@EqualsAndHashCode(callSuper = true)
<#else>
@EqualsAndHashCode(callSuper = false)
</#if>
</#if>
<#if swagger>
@Schema(name = "${entity}", description = "${table.comment!}")
</#if>
<#if table.convert>
@TableName("${schemaName}${table.name}")
</#if>
public class ${entity} extends Model<${entity}> {
<#-- 字段循环 -->
<#list table.fields as field>
    <#if field.keyFlag>
        <#assign keyPropertyName="${field.propertyName}"/>
    </#if>
    <#if field.comment!?length gt 0>
    /**
     * ${field.comment}
     */
    </#if>
    <#if swagger>
    @Schema(description = "${field.comment!}", example = "<#if field.type?contains('Integer')>1<#elseif field.type?contains('LocalDateTime')>2025-03-22T10:15:30<#else>示例值</#if>")
    </#if>
    private ${field.propertyType} ${field.propertyName};
</#list>
}

步骤二:修改代码生成器配置

更新你的 AutoCodeGenerator 类:

java

package com.lanke.editorboot;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

public class AutoCodeGenerator {
    public static void main(String[] args) {
        String url = "jdbc:mysql:///editor";
        String username = "root";
        String password = "root";
        String author = "lanke";
        String outputDir = "src\\main\\java";
        String basePackage = "com.lanke";
        String moduleName = "sys";
        String mapperLocation = "src\\main\\resources\\mapper\\" + moduleName;
        String tableName = "articles,user";
        String tablePrefix = "";
        FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> {
                    builder.author(author) // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            //.fileOverride() // 覆盖已生成文件
                            .outputDir(outputDir); // 指定输出目录
                })
                .templateConfig(builder -> {
                    // 关键:指定自定义模板路径
                    builder.entity("/templates/entity.java");
                })
                .packageConfig(builder -> {
                    builder.parent(basePackage) // 设置父包名
                            .moduleName(moduleName) // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, mapperLocation)); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(tableName) // 设置需要生成的表名
                            .addTablePrefix(tablePrefix); // 设置过滤表前缀
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}

PS:暂时停用,有点问题

步骤三:验证生成的实体类

生成的 User.java 示例:

java

@Schema(name = "User", description = "用户表")
public class User {
    @Schema(description = "用户ID", example = "1")
    private Integer id;

    @Schema(description = "用户名", example = "admin")
    private String username;
}

关键配置说明

配置项作用
.enableSwagger()启用 Swagger 注解生成开关(虽然名字是 Swagger,但通过模板控制实际生成 OpenAPI3 注解)
.templateConfig()指定自定义模板路径,覆盖默认模板
entityBuilder().enableLombok()集成 Lombok 简化代码(可选)

模板变量说明

变量说明
${table.comment}表注释
${field.comment}字段注释
${field.propertyType}字段类型(如 String
${field.propertyName}字段名(如 username

常见问题解决

  1. 模板不生效

    • 检查模板路径是否在 resources/templates/
    • 确保模板文件名与配置一致(如 entity.java 对应 entity.java.ftl
  2. 示例值不符合类型
    修改模板中的 example 生成逻辑:

    ftl

    example = "<#if field.propertyType == 'Integer'>1<#elseif field.propertyType == 'LocalDateTime'>2025-03-22T10:15:30<#else>示例值</#if>"
  3. 日期格式问题
    添加 format 参数:

    ftl

    <#if field.propertyType == 'LocalDateTime'>
    @Schema(description = "${field.comment!}", format = "date-time", example = "2025-03-22T10:15:30")
    </#if>

通过这种方式,MyBatis-Plus 代码生成器将默认生成符合 OpenAPI3 规范的注解,与 Knife4j 完美兼容。

测试

在程序入口添加一行注解 @MapperScan("com.lanke.*.mapper")

包名换成自己的

使用mybatis-plus代码生成器快速构建springboot项目-202503221808

test/java 里修改代码 使用mybatis-plus代码生成器快速构建springboot项目-202503221855

执行就能看见数据库里的数据被输出出来了

再写一个测试接口使用mybatis-plus代码生成器快速构建springboot项目-202503221924

PS:你的程序入口要和 sys 在同一目录下,否则会 404

运行成功使用mybatis-plus代码生成器快速构建springboot项目-202503221932

文章标题:使用mybatis-plus代码生成器快速构建springboot项目

文章作者:Lanke

文章链接:https://blog.blueke.top/posts/234253[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。