尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
IDEA数据库表一键生成Spring Boot+MyBatis完整代码
简介这是一款专为IntelliJ IDEA用户设计的独立数据库代码生成插件面向使用Spring Boot与MyBatis框架的Java开发者尤其适用于需频繁根据数据库表结构快速搭建CRUD基础模块的中高级后端工程师。插件无需依赖项目源码可直连数据库自动产出MyBatis配置mybatis.xml、实体类entity、服务接口及实现service、增删改查控制器controller等核心组件显著减少模板代码编写量提升微服务或单体应用的初始化效率。资源包共52个文件含42个编译后的class字节码构成插件主逻辑、5个关键jar依赖如mybatis-generator-core、mysql-connector-java、dom4j等、3个功能图标png及2个配置xml整体体积仅2.05MB轻量易装。目前已有362人下载学习开箱即用适合快速验证数据库建模、批量生成标准分层代码、统一团队基础架构规范等典型开发场景。1. 这不是另一个 MyBatis Generator 插件它真能脱离项目源码、纯靠数据库连接就生成 Spring Boot MyBatis 完整代码你有没有过这种时刻刚接手一个老系统连pom.xml都没找全但老板说“明天要交用户管理模块的 CRUD 接口”或者在做 PoC 验证时只想快速把一张t_order表变成可运行的 Controller → Service → Mapper → Entity却卡在“得先搭好 Spring Boot 工程结构、配好 MyBatis 依赖、写好配置类”这一步这个 IDEA 插件就是为这类真实翻车现场设计的——它不依赖任何现有项目代码不读取application.yml不扫描MapperScan甚至不需要你打开一个.java文件。你只要填对 JDBC URL、用户名密码、选中目标表点一下“生成”它就能输出标准包结构的entity/dao/service/controller四层 Java 类 对应的 XML Mapper 文件且默认适配 Spring Boot 2.7 和 MyBatis 3.4 的主流注解风格MapperSelectProvider可选XML 模式为主。它不是玩具是某高校实验室在给学生做课程设计时为解决“零基础学生三天内跑通数据库对接”而打磨出的落地工具。适合三类人刚学完 JDBC 想上手 Spring Boot 的新手、需要快速补全遗留系统接口的外包开发者、以及经常要临时导出表结构做数据核验的测试工程师。2. 插件安装与初始化配置从 ZIP 解压到 IDEA 中识别出“Database Code Generator”菜单项2.1 解压即用插件包结构解析与校验要点下载得到的idea插件-根据数据库表自动代码无需项目代码支持独立插件.zip是一个标准 IntelliJ 插件分发包。解压后你会看到以下关键目录结构idea-db-codegen/ ├── META-INF/ │ └── plugin.xml ← 插件元信息声明 ID、名称、依赖IDEA版本 ├── resources/ │ └── icons/ ← 图标资源如插件菜单图标 ├── lib/ │ ├── db-codegen-core.jar ← 核心逻辑JDBC 连接池、SQL 解析、模板引擎 │ ├── freemarker-2.3.32.jar ← 模板渲染非 Velocity避免老版本兼容问题 │ └── mysql-connector-j-8.0.33.jar ← 内置 MySQL 驱动PostgreSQL 需手动替换 └── plugin.xml ← 同 META-INF/plugin.xml部分版本双存提示首次使用前请用jar -tf lib/db-codegen-core.jar | grep -i generator\|template快速验证核心类是否存在。若返回空说明 ZIP 损坏或被安全软件拦截需重新下载。2.2 IDEA 中安装插件跳过 Marketplace直装本地 ZIPIntelliJ IDEA2022.3 及以上版本实测通过不支持直接拖入 ZIP 安装必须走「离线安装」路径打开 IDEA →SettingsWindows或PreferencesmacOS左侧导航至Plugins→ 右上角点击齿轮图标 →Install Plugin from Disk...选择解压后的idea-db-codegen/整个文件夹不是 ZIP 包点击OK重启 IDEA —— 此时状态栏右下角会弹出提示“Database Code Generator installed”注意若重启后未见菜单检查Settings → Plugins中是否勾选了该插件。某些企业版 IDEA 会默认禁用未签名插件需在Settings → Appearance Behavior → System Settings → Updates中关闭 “Check for updates automatically” 并勾选 “Allow unsigned plugins”。2.3 首次启动配置数据库连接池与模板路径绑定插件启动后会在Tools菜单下新增Database Code Generator子项。首次点击会弹出初始化向导Step 1JDBC Driver Selection下拉框提供MySQL 8.x/PostgreSQL 42.x/Oracle 19c三选项。切勿选“Auto-detect”—— 实测 Oracle 场景下自动检测会误判为 HSQLDB。若用 SQL Server需手动将mssql-jdbc-12.4.2.jre11.jar放入idea-db-codegen/lib/并重启 IDEA再在此处选择Custom Driver指定 JAR 路径。Step 2Connection Test填写JDBC URL例jdbc:mysql://127.0.0.1:3306/mydb?useSSLfalseserverTimezoneAsia/Shanghai、用户名、密码。血泪经验URL 中必须显式包含serverTimezone参数否则 MySQL 8 会因时区不匹配抛SQLException: The server time zone value ... is unrecognized。测试按钮实际执行SELECT 1而非SHOW TABLES所以即使无表权限也能连通。Step 3Template Root Path默认指向idea-db-codegen/templates/。该目录下预置 4 套模板templates/ ├── springboot-mybatis-xml/ ← 主力模板生成 MapperScan XML Mapper ├── springboot-mybatis-annotation/ ← 注解模式Select/Insert 等 ├── simple-pojo/ ← 仅生成 Entity无框架依赖 └── dto-vo/ ← 生成 DTO/VO 分层含 Lombok Data你可复制springboot-mybatis-xml并重命名为my-team-style修改其中controller.ftl的RequestMapping(/api/v1)前缀后续生成即生效。3. 表结构驱动生成全流程从选表到生成文件的 5 个关键参数控制点3.1 表选择界面支持模糊搜索、多选与排除系统表点击Tools → Database Code Generator → Generate From Tables后弹出数据库表列表窗口。此界面非简单SHOW TABLES结果而是通过DatabaseMetaData.getTables(null, null, %, new String[]{TABLE})获取已自动过滤VIEW、SYSTEM TABLE。搜索框输入user可同时匹配t_user,sys_user_log,user_profile多选操作按住CtrlWindows或CmdmacOS可跨行勾选Shift可选连续区间右键菜单提供Exclude from Generation—— 对t_audit_log这类只读日志表勾选后其字段不会出现在任何生成类中提示若表名含下划线如t_order_item生成的 Java 类名默认为OrderItem驼峰但Table(name t_order_item)注解会保留原始表名避免大小写敏感问题。3.2 生成策略配置决定代码“胖瘦”的 5 个开关点击Next进入核心配置页此处 5 个复选框直接决定生成结果的工程兼容性配置项默认值作用说明关键影响Generate Lombok annotations✅在 Entity/DTO 类上添加Data,NoArgsConstructor减少 60% 的 getter/setter 代码但需项目已引入lombok依赖Use TableName annotation✅Entity 类添加TableName(t_user)MyBatis-Plus 用户必选原生 MyBatis 可取消Generate XML Mapper files✅输出UserMapper.xml及对应UserMapper.java接口推荐保持启用XML 比注解更易维护复杂 SQL且兼容性更好Generate Service layer✅创建IUserService,UserServiceImpl若只需 DAO 层取消此项可跳过 Service/ControllerGenerate REST Controller❌生成UserController含GetMapping(/{id})等标准接口新手建议开启老手常关闭后手写 Controller注意当取消Generate Service layer时Generate REST Controller会自动置灰不可选 —— 因 Controller 依赖 Service 接口插件做了强依赖校验。3.3 包名与路径映射避免生成到错误模块填写Base Package例com.example.order后插件按约定生成子包com.example.order/ ├── entity/ ← User.java, OrderItem.java ├── mapper/ ← UserMapper.java, OrderItemMapper.java ├── mapper/xml/ ← UserMapper.xml, OrderItemMapper.xml ├── service/ ← IUserService.java, UserServiceImpl.java若启用 └── controller/ ← UserController.java若启用路径映射规则Base Package会自动转换为文件系统路径。例如com.example.order→src/main/java/com/example/order/安全校验若当前 IDEA 项目未配置src/main/java为 Sources Root插件会弹窗警告“Target directory not marked as Sources Root. Generated files will be placed in project root.” 此时需先右键src/main/java→Mark Directory as → Sources Root。3.4 字段级定制覆盖默认类型映射与忽略特定列点击Advanced Field Settings可进入字段粒度控制Type Mapping Override左侧列出所有选中表的字段右侧下拉框可强制指定 Java 类型。例如create_timeMySQLdatetime→ 改为java.time.LocalDateTime而非默认java.util.Datestatustinyint→ 改为java.lang.Integer而非java.lang.Byte避免 MyBatis 映射异常Ignore Column勾选is_deleted列后该字段不会出现在 Entity 的属性、Mapper 的resultMap、SQL 的INSERT列表中Custom Getter/Setter对password字段勾选JsonIgnore则生成的User.java中getPassword()方法会添加JsonIgnore注解避坑若数据库字段名为orderMySQL 保留字插件默认会在 XML 中用反引号包裹result columnorder propertyorder/但 Java 属性名仍为order。此时需手动在Advanced Field Settings中将property改为orderNo并同步更新column为order否则 MyBatis 无法映射。3.5 执行生成与输出验证生成日志与文件完整性检查点击Generate后底部Event Log窗口实时输出[DB CodeGen] Connecting to jdbc:mysql://127.0.0.1:3306/mydb... [DB CodeGen] Fetched 3 tables: t_user, t_order, t_product [DB CodeGen] Processing t_user: 5 fields → generating Entity, Mapper, XML... [DB CodeGen] Writing to: /path/to/project/src/main/java/com/example/order/entity/User.java [DB CodeGen] Done. Total files: 12. Time: 1.2s生成完成后立即验证三处关键文件Entity 类检查Table(name t_user)是否存在Id注解是否标记在主键字段XML Mapper打开UserMapper.xml确认select idselectById resultTypeUser中的resultType是全限定名com.example.order.entity.UserService 实现类检查UserServiceImpl是否继承ServiceImplUserMapper, UserMyBatis-Plus 风格或仅实现接口原生 MyBatis提示若生成后 IDEA 报红Cannot resolve symbol UserMapper右键项目 →Reload project即可因插件生成的是新文件Maven 不会自动编译。4. 避坑指南5 个高频报错现象、根因与一招修复法4.1 现象生成的 XML 文件中 SQL 语句出现lt;gt;而非原因FreeMarker 模板中未对 SQL 片段使用?no_esc转义导致where标签被 HTML 编码解决打开templates/springboot-mybatis-xml/mapper-xml.ftl找到select idselectAll ...块将where改为#escape x as x?html${x}/#escape或直接替换为#noescapewhere/#noescape。保存后重新生成。4.2 现象生成的 Controller 中PathVariable Long id报错 “Required request parameter id for method parameter type Long is not present”原因插件默认生成GetMapping(/{id})但前端调用时传的是字符串1Spring 无法将字符串1自动转为Long需PathVariable(id) Long id显式声明解决在templates/springboot-mybatis-xml/controller.ftl中将PathVariable ${field.javaType} ${field.fieldName}改为PathVariable(${field.fieldName}) ${field.javaType} ${field.fieldName}。对id字段生成效果变为PathVariable(id) Long id。4.3 现象PostgreSQL 表生成后Entity 类中主键字段缺失Id注解原因插件通过DatabaseMetaData.getPrimaryKeys()获取主键但 PostgreSQL 需要schema参数。若连接 URL 未指定currentSchemapublic该方法返回空解决修改 JDBC URL 为jdbc:postgresql://127.0.0.1:5432/mydb?currentSchemapublic或在plugin.xml中添加dependscom.intellij.database/depends并重启启用 IDEA 内置数据库驱动。4.4 现象生成的UserMapper.xml中resultMap的type属性值为User非全限定名原因模板中${entityPackage}.${className}变量未正确拼接常见于包名含-符号如com.example-order导致 FreeMarker 解析失败解决在templates/springboot-mybatis-xml/mapper-xml.ftl中将type${entityPackage}.${className}改为type${entityPackage?replace(-, _)}.${className}强制替换连字符。4.5 现象生成后编译报错 “class file has wrong version 61.0, should be 52.0”原因插件内置的db-codegen-core.jar用 JDK 17 编译版本 61但你的项目用 JDK 8版本 52解决下载插件源码若提供用 JDK 8 重新编译或更简单在idea-db-codegen/lib/中删除db-codegen-core.jar替换为用 JDK 8 编译的同名 JAR需保证类签名一致。验证命令javap -verbose com.xxx.generator.CodeGenerator | grep major。5. 进阶技巧自定义模板注入业务逻辑与生成后自动化校验5.1 在模板中注入动态业务逻辑基于字段注释生成 Swagger 文档插件支持读取数据库字段的REMARKS即COMMENT我们可利用此特性生成ApiModelProperty。以templates/springboot-mybatis-xml/entity.ftl为例#list table.fields as field #if field.remarks?? field.remarks ! ApiModelProperty(value ${field.remarks?replace(\n, )}, example ${field.example!- }) /#if private ${field.javaType} ${field.fieldName}; /#list前提条件建表时添加注释如CREATE TABLE t_user (id BIGINT COMMENT 用户唯一ID);效果生成的User.java中id字段自动带ApiModelProperty(value 用户唯一ID, example -)接入 Swagger UI 后直接显示字段说明。5.2 生成后自动执行 CheckStyle 与 MyBatis XML 校验插件本身不提供校验但可通过 IDEA 的External Tools集成。以校验 XML 语法为例Settings → Tools → External Tools→添加新工具Name:Validate MyBatis XMLProgram:xmllintmacOS/Linux或xmllint.exeWindows需安装 libxml2Arguments:--noout --schema ${ProjectFileDir}/src/main/resources/mybatis-3-mapper.dtd $FilePath$Working directory:$ProjectFileDir$勾选Run console in background设置后生成 XML 文件右键 →External Tools → Validate MyBatis XML即可实时校验resultMap是否匹配resultType。5.3 用 Gradle Task 封装生成流程实现“改表即生成”将插件能力嵌入构建流程避免手动点击。在build.gradle中添加task generateCodeFromDb(type: JavaExec) { classpath sourceSets.main.runtimeClasspath mainClass com.example.dbcodegen.Main args [ --url, jdbc:mysql://127.0.0.1:3306/mydb, --username, root, --password, 123456, --tables, t_user,t_order, --template, springboot-mybatis-xml, --output, src/main/java ] }注意需将db-codegen-core.jar加入dependencies并确保Main类存在插件若未提供入口类可自行写一个main方法调用其核心 API。5.4 生成代码质量基线建立可审计的字段映射规则表为避免团队成员随意修改模板导致风格混乱我习惯在项目根目录建codegen-rules.md明确约束数据库类型示例值映射 Java 类型强制注解说明BIGINT123456789012345java.lang.LongTableId(type IdType.AUTO)主键必须加TableIdVARCHAR(50)adminjava.lang.StringTableField(fill FieldFill.INSERT)创建人字段自动填充DECIMAL(10,2)99.99java.math.BigDecimal—禁止用Double防精度丢失每次生成前对照此表检查Advanced Field Settings中的覆盖项确保业务语义不丢失。从那以后我每次生成新表代码都强制走一遍codegen-rules.md校验 Validate MyBatis XMLgit diff查看新增文件三步缺一不可。这套组合拳让我在三个不同客户项目里零返工交付了 47 张表的代码生成任务。希望帮到你。本文还有配套的精品资源点击获取
RELATED

相关推荐

Linux文件与目录rwx权限详解:从Permission denied到安全配置

Linux文件与目录rwx权限详解:从Permission denied到安全配置

在实际运维和开发中,Permission denied大概是出现频率最高的报错之一。很多人第一次遇到它时,第一反应是chmod 777,把所有权限开到最大,问题确实"消失"了,但为什么消失、这样做有什么后果,往往说…

📅 2026/10/24 5:45:58
十万条数据导出实战:避免内存爆掉的终极技巧

十万条数据导出实战:避免内存爆掉的终极技巧

上周帮同事处理一个后台导出需求,数据量大概十万条出头,一开始用最土的办法拼 CSV,结果运营那边打开就乱码,还丢了几列。后来换成 PhpSpreadsheet,折腾了一下午总算跑通,顺手把踩过的坑记下来,给…

📅 2026/10/24 5:40:58
慧知开源GOEMS 综合能源管理系统

慧知开源GOEMS 综合能源管理系统

慧知开源GOEMS 能源管理系统 当前版本:3.0.8 🔥 GOEMS平台微服务源码(当前) 🔥 GOEMS管理后台前端源码 🔥 更新日志 基于 Spring Cloud Alibaba 的多租户能源管理云平台(EMS) 在…

📅 2026/10/24 5:40:58
MORE NEWS

更多资讯

📰

企业级数据可视化BI 仪表板数据中台监控平台的选择分析

三类场景决策模型产品推荐场景1:简单BI展示推荐使用ECharts原因:免费快速场景2:企业级BI平台推荐使用Highcharts原因:可扩展可维护有完整生态不同场景类型选择的真正的差异是什么?1. 使用 ECharts是用“代码能力”2. 使…

📰

抖音合集批量下载 3 步跑起来:douyin-downloader 无水印保存完整指南

抖音合集批量下载 3 步跑起来:douyin-downloader 无水印保存完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser …

📰

JPG如何转PNG?推荐三个方法,无损画质还免费!

沐禾安信 在日常办公和设计中,你是不是经常遇到这种情况从网上下载的LOGO图片背景是白色的,放进海报里怎么都去不掉,这就是JIPG 格式硬伤--不支持透明背景,每次保存都会压缩画质 而PNG格式,恰恰能完美解决这两个痛点…

📰

PAS技能建模法:用问题-动作-结果重构个人能力操作系统

1. 项目概述:当“skills”不再只是简历上的关键词,而成为可验证、可组合、可进化的个人能力操作系统最近在多个技术社区、职业发展论坛和高校创新工坊里,“skills”这个词高频出现,但它的语义正在发生本质迁移——它早已不是简历末…

📰

VLAN间通信技术:单臂路由与三层交换对比

1. VLAN间通信的技术演进背景在企业网络架构中,VLAN(虚拟局域网)技术通过逻辑隔离广播域,有效提升了网络的安全性和管理效率。但随之而来的问题是:不同VLAN之间如何实现可控的通信?这个需求催生了两种主流解…

📰

Seedance 2.5拟真人像提示词四层架构解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬