当前位置: 首页 > news >正文

【然然管理系统】基于 SpringBoot+MyBatisPlus+Freemarker 实现代码生成功能(上)

然然管理系统仓库地址,欢迎移步仓库点个小星星
https://gitee.com/OceanCore/ranran.git
https://github.com/qiaoting/ranran.git

一、前言

在后台管理系统开发中,CRUD 代码的编写占据了大量重复工作 —— 每个业务表都要写 Entity、Mapper、Service、Controller,不仅效率低,还容易出现格式不统一的问题。为此,然然管理系统新增了自动化代码生成功能,基于 SpringBoot+MyBatis+Freemarker 技术栈,实现 “数据库表→Java 业务代码” 的一键生成,本文先从整体设计和核心模块入手,讲解功能的实现思路。

系统截图:

二、功能设计

本代码生成功能的核心目标是:前端展示数据库表列表 → 选择表并传入基础配置 → 后端生成 Entity、Mapper、Service、Controller 代码 → 前端展示生成结果。整体流程如下:

前端请求表列表 → 后端查询information_schema获取表信息 → 前端提交表名/作者/模块名等配置 → 后端查询表字段 → 字段类型映射 → Freemarker渲染模板 → 返回生成的代码字符串 → 前端展示

三、技术环境

  • 基础框架:SpringBoot
  • 数据持久层:MyBatis(XML + 接口)
  • 模板引擎:Freemarker(代码模板渲染)
  • 辅助工具:Lombok(简化实体类)、自定义工具类(表名转类名、类型映射)

四、模块拆解

1. 数据层:查询数据库表与字段

核心是通过information_schema系统库查询表和字段信息,这是跨数据库(MySQL)通用的方式:

  • 表查询(GeneratorTableMapper):查询指定数据库下的所有表名、引擎、表注释。
  • 字段查询(GeneratorTableFieldMapper):查询指定表的字段名、类型、注释、主键、可空性等。

关键 Mapper XML 示例(字段查询):

<select id="selectAllField" parameterType="String" resultType="GeneratorTableField"> select column_name as columnname, data_type as columntype, column_comment as remarks, case when is_nullable = 'yes' then 1 else 0 end as isnullable, case when column_key = 'pri' then 1 else 0 end as isprimarykey from information_schema.columns where table_schema = (select database()) and table_name = #{tableName} order by ordinal_position </select>

2. 服务层:业务逻辑处理

服务层分为 3 个核心类,职责单一:

  • GeneratorTableService:封装表列表查询逻辑,对外提供getAllTable方法。
  • GeneratorTableFieldService:核心是字段类型映射(数据库类型→Java 类型),比如varcharStringdatetimeLocalDateTime
  • GeneratorService:整合表字段信息,通过 Freemarker 渲染模板,生成各类代码文件。

3. 工具类:通用能力封装

  • TableUtil:实现 “下划线表名→驼峰类名” 转换,支持移除指定前缀(比如t_sys_)。
  • GenerateUtil:组装代码生成所需的类信息(模块名、基础包名、类名等),补充到ClassInfoDto中。

4. 控制层:接口暴露

GeneratorController提供两个核心接口:

  • GET /api/generator/listTable:查询数据库表列表,支持指定数据库名。
  • POST /api/generator/getCode:接收表名、作者、模块名等配置,返回生成的代码 Map(key 为文件名,value 为代码字符串)。

五、功能演示(接口层面)

查询表列表:

GET /api/generator/listTable?dbName=ranran_db

返回结果包含表名、表注释、引擎等信息,前端可渲染为下拉列表 / 表格。

生成代码:

POST /api/generator/getCode { "tableName": "sys_user", "moduleName": "system", "functionName": "用户管理", "author": "ranran" }

返回结果为 Map,示例:

{ "entity.java": "package com.ranran.system.entity;...", "mapper.java": "package com.ranran.system.mapper;...", "service.java": "package com.ranran.system.service;...", "controller.java": "package com.ranran.system.controller;..." }

六、总结

本文从整体视角拆解了然然管理系统代码生成功能的核心设计与模块划分,下一篇将深入讲解字段类型映射、Freemarker 模板渲染、表名转换等核心细节,以及功能的扩展与优化思路。

http://www.jsqmd.com/news/234140/

相关文章:

  • MiDaS模型性能优化:推理速度与精度平衡
  • MiDaS模型详解:轻量高效的秘密
  • 【Java毕设源码分享】基于springboot+vue的高中学生素质评价档案系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 支持实时语义分析的中文NER工具|Cyberpunk风格WebUI体验
  • 无需编码!用AI 智能实体侦测服务快速实现文本信息抽取
  • 如何让AI看懂产线缺陷?Qwen3-VL-WEBUI落地实践全解析
  • 【Java毕设源码分享】基于springboot+vue的公司人事管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 单目深度估计进阶:MiDaS高级应用指南
  • 一键启动Qwen3-VL-4B-Instruct|WEBUI镜像让多模态模型开箱即用
  • 基于MiDaS的深度感知:快速部署与使用
  • 基于UDS协议的Bootloader定制之旅
  • 简单理解:STM32 互补 PWM 死区时间,档位设计 + 原理 + 实操全解析
  • 从零开始使用MiDaS:深度估计实战指南
  • Rembg模型架构深度解析:U2NET原理
  • 单目深度估计MiDaS:安防监控场景实践案例
  • MiDaS部署技巧:如何优化CPU环境下的推理速度
  • 从零部署Qwen2.5-7B:vLLM推理加速与Gradio界面集成
  • Rembg抠图API监控:实时性能仪表盘
  • MiDaS实战:工业检测深度估计案例
  • MiDaS实战教程:无需GPU的高效深度感知方案
  • 导师严选9个AI论文写作软件,助本科生轻松搞定毕业论文!
  • 简单理解:什么是双线接口(TWI)
  • 单目视觉测距系统:基于MiDaS的完整部署教程
  • 单目视觉测距系统:基于MiDaS的完整部署教程
  • 单目视觉测距系统:基于MiDaS的完整部署教程
  • MiDaS模型深度解析:从原理到部署的完整教程
  • 数据库设计利器:ER图完全指南
  • Rembg批量处理效率:不同规模测试对比
  • 三菱Q01U在12轴伺服控制中的实战应用
  • AI深度估计进阶:MiDaS模型的多任务学习优化