news 2026/4/22 12:03:34

SpringBoot项目整合mybatis-plus-generator-ui保姆级教程(含MySQL 8.0连接避坑)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot项目整合mybatis-plus-generator-ui保姆级教程(含MySQL 8.0连接避坑)

SpringBoot整合MyBatis-Plus代码生成器实战指南

1. 环境准备与项目初始化

在开始之前,确保你已经具备以下基础环境:

  • JDK 1.8或更高版本
  • Maven 3.6+
  • MySQL 8.0+数据库服务
  • 一个基础的SpringBoot 2.7.x项目

常见环境问题排查清单

  • 检查Java版本:java -version
  • 确认Maven配置:mvn -v
  • 验证MySQL服务状态:systemctl status mysql(Linux)或服务管理器(Windows)

创建基础项目结构:

mybatis-plus-generator-demo ├── pom.xml └── src ├── main │ ├── java │ └── resources └── test └── java

2. 关键依赖配置

在pom.xml中添加必要的依赖项:

<dependencies> <!-- MyBatis-Plus生成器UI核心 --> <dependency> <groupId>com.github.davidfantasy</groupId> <artifactId>mybatis-plus-generator-ui</artifactId> <version>1.4.5</version> <scope>test</scope> </dependency> <!-- MySQL 8.0+驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.31</version> </dependency> <!-- Lombok简化代码 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> </dependencies>

依赖选择注意事项

依赖项推荐版本作用说明
mybatis-plus-generator-ui≥1.4.5提供Web交互界面
mysql-connector-java≥8.0.25MySQL官方JDBC驱动
lombok最新稳定版减少样板代码

3. 启动类深度配置

创建GeneratorMain.java启动类,这是整个生成器的控制中心:

package com.example; import com.github.davidfantasy.mybatisplus.generatorui.GeneratorConfig; import com.github.davidfantasy.mybatisplus.generatorui.MybatisPlusToolsApplication; import com.github.davidfantasy.mybatisplus.generatorui.mbp.NameConverter; public class GeneratorMain { public static void main(String[] args) { GeneratorConfig config = GeneratorConfig.builder() .driverClassName("com.mysql.cj.jdbc.Driver") .jdbcUrl("jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=Asia/Shanghai") .userName("your_username") .password("your_password") .basePackage("com.your.package") .nameConverter(new NameConverter() { @Override public String serviceNameConvert(String tableName) { return this.entityNameConvert(tableName) + "Service"; } @Override public String controllerNameConvert(String tableName) { return this.entityNameConvert(tableName) + "Controller"; } }) .port(8068) .build(); MybatisPlusToolsApplication.run(config); } }

MySQL 8.0连接参数详解

  • com.mysql.cj.jdbc.Driver:必须使用cj驱动
  • serverTimezone:必须明确指定时区
  • useSSL=false:本地开发可禁用SSL
  • allowPublicKeyRetrieval=true:某些情况需要添加

重要提示:生产环境请勿使用简单密码,并确保配置正确的SSL参数

4. Web UI操作全流程

启动应用后访问http://localhost:8068,界面主要功能区域:

  1. 数据源配置区:可覆盖启动类中的配置
  2. 表选择区:显示数据库所有表
  3. 生成选项区:控制生成哪些组件
  4. 模板配置区:自定义各类模板

典型操作步骤

  1. 左侧选择需要生成代码的数据表
  2. 中间区域勾选要生成的组件类型:
    • Entity
    • Mapper接口
    • Mapper XML
    • Service接口
    • Service实现类
    • Controller
  3. 右侧配置包路径和命名规则
  4. 点击"生成代码"按钮

生成代码结构示例

src/main/java/com/example/ ├── controller │ └── UserController.java ├── entity │ └── User.java ├── mapper │ ├── UserMapper.java │ └── xml │ └── UserMapper.xml └── service ├── UserService.java └── impl └── UserServiceImpl.java

5. 高级配置与自定义

5.1 自定义模板配置

在resources目录下创建generator-templates文件夹,可以放置自定义模板:

resources/ └── generator-templates/ ├── entity.java.ftl ├── mapper.java.ftl ├── mapper.xml.ftl ├── service.java.ftl └── controller.java.ftl

模板变量参考

  • ${table.name}:表名
  • ${table.comment}:表注释
  • ${entity}:实体类名
  • ${author}:作者名
  • ${date}:当前日期

5.2 多数据源支持

通过修改启动类支持多数据源:

GeneratorConfig config = GeneratorConfig.builder() .dataSourceConfig(builder -> { builder.addDataSource("ds1", "com.mysql.cj.jdbc.Driver", "jdbc:mysql://localhost:3306/db1", "user", "pass"); builder.addDataSource("ds2", "oracle.jdbc.OracleDriver", "jdbc:oracle:thin:@localhost:1521:ORCL", "user", "pass"); }) // 其他配置... .build();

5.3 生成策略配置

通过NameConverter接口实现各类命名策略:

.nameConverter(new NameConverter() { @Override public String entityNameConvert(String tableName) { // 自定义实体类命名规则 return StrUtil.upperFirst(StrUtil.toCamelCase(tableName)); } @Override public String mapperNameConvert(String tableName) { return entityNameConvert(tableName) + "Mapper"; } })

6. 常见问题解决方案

问题1:驱动类加载失败

症状:

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

解决方案:

  1. 检查pom.xml中mysql-connector-java版本
  2. 确认依赖已正确下载(查看Maven本地仓库)
  3. 清理项目后重新构建

问题2:时区错误

症状:

The server time zone value 'xxx' is unrecognized...

解决方案: 在jdbcUrl中添加时区参数:

jdbc:mysql://localhost:3306/db?serverTimezone=Asia/Shanghai

问题3:Public Key Retrieval错误

症状:

Public Key Retrieval is not allowed

解决方案: 在jdbcUrl中添加:

allowPublicKeyRetrieval=true

性能优化建议

  • 对于大表生成,可以先在UI中预览再生成
  • 生成前关闭不必要的IDE索引
  • 分批次生成大量表结构

7. 实际应用技巧

技巧1:批量生成配置

  1. 在UI中选择多个表
  2. 使用"批量设置"功能统一配置
  3. 勾选"覆盖已有文件"谨慎使用

技巧2:自定义注释模板

修改entity.java.ftl模板:

/** * ${table.comment!} * * @author ${author!} * @since ${.now?string('yyyy-MM-dd')} */

技巧3:生成后自动格式化

配置IDE在生成后自动格式化代码:

  1. IntelliJ IDEA: Settings → Tools → Actions on Save
  2. Eclipse: Window → Preferences → Java → Editor → Save Actions

技巧4:历史记录管理

生成器会保留最近的操作记录,位置:

~/.mybatis-plus-generator-ui/history

可以定期清理或备份重要配置

8. 集成到现有项目的最佳实践

场景1:已有SpringBoot项目集成

  1. 在test scope添加依赖
  2. 创建独立的generator模块
  3. 通过Profile控制生成环境

场景2:团队共享配置

  1. 将通用模板放入共享目录
  2. 使用Maven资源过滤统一变量
  3. 建立标准命名规范文档

场景3:CI/CD集成

  1. 编写生成脚本
  2. 配置生成后自动测试
  3. 设置生成结果验证机制

版本控制建议

  • 不提交生成的Entity/Mapper等基础代码
  • 提交自定义模板和配置
  • 记录重要生成操作的日志

9. 安全注意事项

数据库安全

  • 不要在生产环境使用简单密码
  • 生成器应用应当限制访问IP
  • 及时关闭不需要的生成器实例

代码安全

  • 检查生成的Controller是否包含必要安全注解
  • 验证Service层事务配置
  • 审核自动生成的SQL语句

配置安全

  • 敏感信息应当使用环境变量
  • 不要将数据库配置提交到版本控制
  • 定期轮换数据库凭据

10. 扩展应用场景

场景1:数据库文档生成

利用生成的Entity可以:

  1. 自动生成Swagger文档
  2. 导出Markdown格式表结构
  3. 生成数据库关系图

场景2:测试数据生成

结合生成的Model可以:

  1. 自动创建测试用例
  2. 生成模拟数据
  3. 构建性能测试数据集

场景3:多端代码生成

通过自定义模板可以:

  1. 生成前端API调用代码
  2. 创建DTO转换类
  3. 输出TypeScript类型定义

在实际项目中使用这套工具链后,团队的新表开发时间从原来的2小时缩短到15分钟左右,特别是对于包含20+字段的复杂表结构,优势更加明显。关键是要建立适合自己团队的模板库和规范,定期更新维护。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 12:02:51

8大网盘直链下载神器:告别限速,享受极速下载体验

8大网盘直链下载神器&#xff1a;告别限速&#xff0c;享受极速下载体验 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 …

作者头像 李华
网站建设 2026/4/22 12:02:38

LRCGet终极指南:如何批量下载和管理音乐同步歌词

LRCGet终极指南&#xff1a;如何批量下载和管理音乐同步歌词 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget LRCGet是一款专为音乐爱好者设计的智能同步…

作者头像 李华
网站建设 2026/4/22 12:02:31

EdgeRemover:高效彻底卸载Microsoft Edge的完整解决方案

EdgeRemover&#xff1a;高效彻底卸载Microsoft Edge的完整解决方案 【免费下载链接】EdgeRemover A PowerShell script that correctly uninstalls or reinstalls Microsoft Edge on Windows 10 & 11. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover 对…

作者头像 李华
网站建设 2026/4/22 12:00:46

新谈设计模式 Chapter 18 — 观察者模式 Observer

Chapter 18 — 观察者模式 Observer灵魂速记&#xff1a;微信公众号——发了文章自动推送给所有关注者&#xff0c;取关了就收不到。秒懂类比 你关注了一个公众号。公众号发文章时&#xff0c;不需要知道你是谁&#xff0c;只需要把文章推给所有关注者。你想取关&#xff1f;取…

作者头像 李华
网站建设 2026/4/22 11:59:58

从‘噪音’到‘魔法’:手把手图解GSW同态加密的核心思想

从‘噪音’到‘魔法’&#xff1a;手把手图解GSW同态加密的核心思想 想象一下&#xff0c;你有一个神奇的保险箱——不仅能锁住贵重物品&#xff0c;还能让快递员在不开锁的情况下对里面的珠宝进行估价、清洗甚至重新镶嵌。这就是同态加密&#xff08;Homomorphic Encryption, …

作者头像 李华