news 2026/5/1 5:57:27

MyBatis-Plus代码生成器(数据库逆向工程)实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MyBatis-Plus代码生成器(数据库逆向工程)实战指南

引言

在Java后端开发中,数据库操作是必不可少的环节。传统的MyBatis开发需要手动编写实体类、Mapper接口、Service接口以及对应的XML文件,这个过程不仅繁琐,而且容易出现错误。MyBatis-Plus(简称MP)作为MyBatis的增强工具,提供了强大的代码生成器功能,可以帮助开发者一键生成所需的所有代码,极大地提高了开发效率。

本文将详细介绍如何使用MyBatis-Plus的代码生成器,深入解析每个配置项的作用和使用方法,并提供完整的实战案例。

一、Maven依赖配置

要使用MyBatis-Plus的代码生成器,我们首先需要在项目的pom.xml文件中添加相应的Maven依赖。以下是需要的核心依赖:

1. MyBatis-Plus核心依赖

<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency>

2. MyBatis-Plus代码生成器依赖

<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.3.1</version> </dependency>

3. 数据库驱动依赖(以MySQL为例)

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> <scope>runtime</scope> </dependency>

4. 模板引擎依赖(可选)

如果需自定义代码生成模板,可以添加模板引擎依赖,例如Freemarker:

<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.32</version> </dependency>

二、MPDBConfig.java代码解析

1. 包导入部分

import com.baomidou.mybatisplus.annotation.DbType; 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;

这里导入了MyBatis-Plus代码生成器所需的核心类:

  • DbType:数据库类型枚举

  • AutoGenerator:代码生成器主类

  • DataSourceConfig:数据源配置类

  • GlobalConfig:全局配置类

  • PackageConfig:包名策略配置类

  • StrategyConfig:生成策略配置类

  • NamingStrategy:命名策略枚举

2. 主方法入口

public static void main(String[] args) { // 代码生成器 AutoGenerator autoGenerator = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); // ... 配置内容 autoGenerator.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); // ... 配置内容 autoGenerator.setDataSource(dsc); // 策略配置 StrategyConfig strategy = new StrategyConfig(); // ... 配置内容 autoGenerator.setStrategy(strategy); // 包名策略配置 PackageConfig pc = new PackageConfig(); // ... 配置内容 autoGenerator.setPackageInfo(pc); // 执行逆向生成 autoGenerator.execute(); }

这是代码的主入口,创建了AutoGenerator对象,并依次配置了全局配置、数据源配置、策略配置和包名策略配置,最后执行生成操作。

3. 全局配置详解

GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/src/main/java"); gc.setAuthor("xxx"); // 设置作者 gc.setFileOverride(true); // 多次生成是否覆盖之前的 // gc.setActiveRecord(true); // 设置是否开启AR模式 // gc.setIdType(IdType.ASSIGN_ID); // 设置主键策略 gc.setServiceName("%sService"); // 设置service名称,默认为IxxxService,去掉I gc.setBaseResultMap(true); // 生成的mapper.xml中包含基本的ResultMap结果集 gc.setBaseColumnList(true); // 生成基本的sql查询片段 gc.setOpen(false); // gc.setSwagger2(true); 实体属性 Swagger2 注解

关键配置项解析:

  • setOutputDir:设置代码生成的输出目录,这里使用了System.getProperty("user.dir")获取当前项目根目录

  • setAuthor:设置生成代码的作者信息

  • setFileOverride:设置是否覆盖已存在的文件,true表示覆盖,false表示不覆盖

  • setServiceName:设置Service接口的命名规则,%sService表示生成的Service接口名不带前缀"I",默认为"I%sService"

  • setBaseResultMap:设置是否生成基本的ResultMap,用于查询结果映射

  • setBaseColumnList:设置是否生成基本的SQL查询片段,方便进行字段选择

  • setOpen:设置生成代码后是否自动打开输出目录

4. 数据源配置详解

DataSourceConfig dsc = new DataSourceConfig(); dsc.setDbType(DbType.MYSQL); dsc.setUrl("jdbc:mysql://127.0.0.1:3306/imooc-hire?useUnicode=true&useSSL=false&characterEncoding=utf8"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("123456");

关键配置项解析:

  • setDbType:设置数据库类型,这里选择的是MySQL

  • setUrl:设置数据库连接URL,包含了数据库地址、端口、数据库名以及连接参数

  • setDriverName:设置数据库驱动类名,MySQL 8.0+使用com.mysql.cj.jdbc.Driver

  • setUsername:设置数据库用户名

  • setPassword:设置数据库密码

5. 策略配置详解

StrategyConfig strategy = new StrategyConfig(); strategy.setCapitalMode(true); // 开启全局大小写(true: 大写) strategy.setNaming(NamingStrategy.underline_to_camel); // 下划线转驼峰命名 strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 下划线转驼峰命名 strategy.setInclude("users", "admin");

关键配置项解析:

  • setCapitalMode:设置是否开启全局大写命名

  • setNaming:设置表名的命名策略,这里选择的是下划线转驼峰

  • setColumnNaming:设置字段名的命名策略,同样选择下划线转驼峰

  • setInclude:设置需要生成代码的表名,可以指定多个表名

6. 包名策略配置详解

PackageConfig pc = new PackageConfig(); pc.setParent("com.xxx"); pc.setEntity("pojo"); pc.setMapper("mapper"); pc.setXml("mapper.xml"); pc.setService("service"); pc.setServiceImpl("service.impl"); // pc.setController(null);

关键配置项解析:

  • setParent:设置生成代码的父包名

  • setEntity:设置实体类的包名

  • setMapper:设置Mapper接口的包名

  • setXml:设置Mapper XML文件的包名

  • setService:设置Service接口的包名

  • setServiceImpl:设置Service实现类的包名

  • setController:设置Controller类的包名,如果设置为null则不生成Controller类

三、代码生成器的高级用法

1. 自定义模板

如果默认模板不符合需求,可以使用自定义模板。例如:

TemplateConfig templateConfig = new TemplateConfig() .setController("/templates/controller.java") .setEntity("/templates/entity.java") .setMapper("/templates/mapper.java") .setXml("/templates/mapper.xml") .setService("/templates/service.java") .setServiceImpl("/templates/serviceImpl.java"); autoGenerator.setTemplate(templateConfig);

2. 自定义生成字段

可以通过配置字段筛选规则,只生成特定字段的代码:

StrategyConfig strategy = new StrategyConfig(); strategy.setExcludeColumns("create_time", "update_time"); // 排除不需要生成的字段

3. 自定义生成规则

可以通过配置StrategyConfig的其他方法来定制生成规则,例如:

strategy.setRestControllerStyle(true); // 生成RestController风格的Controller strategy.setControllerMappingHyphenStyle(true); // Controller的URL使用连字符风格 strategy.setVersionFieldName("version"); // 设置乐观锁字段 strategy.setLogicDeleteFieldName("deleted"); // 设置逻辑删除字段

四、使用注意事项

1. 数据库连接配置

确保数据库连接URL、用户名和密码正确,并且数据库服务器正在运行,网络连接正常。

2. 表名和字段名匹配

确保配置中的表名和字段名与数据库中的实际表名和字段名一致,否则可能导致生成失败或生成的代码不正确。

3. 代码覆盖问题

如果设置了setFileOverride(true),则生成的代码会覆盖已存在的文件,建议在生成前备份重要代码。

4. 生成目录权限

确保生成代码的目录有写入权限,否则可能导致生成失败。

五、完整代码展示

import com.baomidou.mybatisplus.annotation.DbType; 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 MPDBConfig { public static void main(String[] args) { // 代码生成器 AutoGenerator autoGenerator = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/src/main/java"); gc.setAuthor("xxx"); // 设置作者 gc.setFileOverride(true); // 多次生成是否覆盖之前的 // gc.setActiveRecord(true); // 设置是否开启AR模式 // gc.setIdType(IdType.ASSIGN_ID); // 设置主键策略 gc.setServiceName("%sService"); // 设置service名称,默认为IxxxService,去掉I gc.setBaseResultMap(true); // 生成的mapper.xml中包含基本的ResultMap结果集 gc.setBaseColumnList(true); // 生成基本的sql查询片段 gc.setOpen(false); // gc.setSwagger2(true); 实体属性 Swagger2 注解 autoGenerator.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setDbType(DbType.MYSQL); dsc.setUrl("jdbc:mysql://127.0.0.1:3306/imooc-hire?useUnicode=true&useSSL=false&characterEncoding=utf8"); // dsc.setSchemaName("public"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("123456"); autoGenerator.setDataSource(dsc); // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setCapitalMode(true); // 开启全局大小写(true: 大写) strategy.setNaming(NamingStrategy.underline_to_camel); // 下划线转驼峰命名 strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 下划线转驼峰命名 // strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); strategy.setInclude("users"); strategy.setInclude("admin"); autoGenerator.setStrategy(strategy); // 包名策略配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.xxx"); pc.setEntity("pojo"); pc.setMapper("mapper"); pc.setXml("mapper.xml"); pc.setService("service"); pc.setServiceImpl("service.impl"); // pc.setController(null); autoGenerator.setPackageInfo(pc); // 执行逆向生成 autoGenerator.execute(); } }

六、总结

MyBatis-Plus的代码生成器是一个非常强大的工具,可以极大地提高开发效率。通过本文的介绍,你应该已经了解了如何使用代码生成器,以及如何根据自己的需求进行配置。

使用代码生成器可以帮助我们减少重复劳动,避免手动编写代码时可能出现的错误,同时保持代码风格的一致性。希望本文对你有所帮助,祝你在使用MyBatis-Plus代码生成器时取得成功!

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

SD-WebUI模型下载器终极指南:便捷高速获取Civitai模型

还在为访问Civitai平台而烦恼吗&#xff1f;SD-WebUI模型下载器完美解决了国内用户下载AI模型的所有难题&#xff0c;让你告别网络限制&#xff0c;轻松获取心仪的Stable Diffusion模型资源。 【免费下载链接】sd-webui-model-downloader-cn 项目地址: https://gitcode.com/…

作者头像 李华
网站建设 2026/4/27 7:51:46

三极管驱动LED灯电路:从理论到实操入门

三极管驱动LED灯电路&#xff1a;从理论到实操入门一个看似简单&#xff0c;却藏着电子世界大门的电路你有没有想过&#xff0c;为什么你的Arduino可以直接点亮一个小LED&#xff0c;但一旦想控制一排高亮灯珠时就“力不从心”&#xff1f;问题不在代码&#xff0c;而在于电流。…

作者头像 李华
网站建设 2026/5/1 5:57:14

科哥出品IndexTTS2最新版发布,情感表达更自然的中文语音合成方案

科哥出品IndexTTS2最新版发布&#xff0c;情感表达更自然的中文语音合成方案 在短视频、AI主播和智能教育产品日益普及的今天&#xff0c;用户对语音内容的要求早已不再满足于“能听懂”——他们需要的是有情绪、有温度、像真人一样的声音。然而&#xff0c;大多数开源中文TTS系…

作者头像 李华
网站建设 2026/5/1 5:57:16

iperf3 Windows网络测试终极指南:轻松评估网络性能

iperf3 Windows网络测试终极指南&#xff1a;轻松评估网络性能 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds iperf3是一款专业级的网络性能测试工…

作者头像 李华
网站建设 2026/4/30 3:43:56

桌面管理革命:WindowResizer让窗口调整变得如此智能

桌面管理革命&#xff1a;WindowResizer让窗口调整变得如此智能 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还记得那个下午&#xff0c;我面对三个需要同时工作的窗口——文档…

作者头像 李华
网站建设 2026/5/1 4:57:18

以孝治家调研组深入以孝治家试点单位西三重村考察慰问

2025年12月26日&#xff0c;正值全国以孝治家行动发起十二周年的喜庆日子。以孝治家调研组在结束临沂市兰山区的调研后&#xff0c;随即赶赴以孝治家试点单位罗庄区傅庄街道西三重村开展调研。此次调研由以孝治家义工吴红大姐带队&#xff0c;调研组成员包括&#xff1a;刘金洪…

作者头像 李华