【摸鱼神器】基于SSM风格的Java源代码生成器 单表生成 一对一、一对多、多对多连接查询生成
一、序言
UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器。代码生成器模块属于可拆卸模块,即按需引入。代码生成器生成SSM(Spring、SpringBoot、MybatisPlus)风格的源代码。
面试时经常提到面向对象编程,实际开发中常常是面向数据库编程,随着需求的快速变化,数据库的库表结构也需要相应变化,如何根据库表结构的变化,快速响应到源代码层次,是Java代码生成器主要的关切点。
功能亮点
实时读取库表结构元数据信息,比如表名、字段名、字段类型、注释等,选中修改后的表,点击一键生成,代码成即可提现出表结构的变化。
单表快速转化restful风格的API接口并对外暴露服务。对于百余张表的数据库,使用代码生成器让开发事半功倍。
多表连接查询。多表连接查询默认不开启,需要在全局文件中手动配置。开启后代码生成器会自动读取数据库元数据信息中的主外键关系,分别生成一对一、一对多、多对多风格的源代码。
生成的代码接口可通过Swagger暴露。
二、运行依赖服务
代码生成器运行依赖Mysql数据库、Redis服务,版本不限。
Mysql数据库
Mysql数据库中库表结构分为两部分,一是系统运行必要的系统表(跟代码生成业务无关),二是用户自定义的库表,代码生成将会读取。
Redis服务
Redis服务跟代码生成业务无关,系统中其它业务用到Redis,因此也依赖Redis服务。
三、快速入门使用
使用demo脚手架[cms demo项目],可直接跳转到步骤3。脚手架是标准的Spring Web工程,内置少量配置信息,用户替换后可快速上手。
# 拉去脚手架,并初始化项目
git clone https://gitee.com/decsa/demo-code.git
1、前提条件
引入如下依赖是使用代码生成器功能的前提条件,其中代码生成器模块在代码生成完毕后,建议移出。
<!--ucode-cms核心依赖-->
<dependency>
<groupId>xin.altitude.cms</groupId>
<artifactId>ucode-cms-spring-boot-starter</artifactId>
<version>1.3.3</version>
</dependency>
<!--代码生成器模块(非必选)-->
<dependency>
<groupId>xin.altitude.cms.code</groupId>
<artifactId>ucode-cms-code-spring-boot-starter</artifactId>
<version>1.3.3</version>
</dependency>
2、全局配置
环境变量必须绑定为开发环境,代码生成器仅在开发模式下生效。打包时即使不移除相关Maven依赖,运行时在非开发环境时,相应代码不加载。建议在打包时移除。
spring:
profiles:
active: dev
3、数据库文件
数据库脚本有两类:核心SQL和用户自定义表结构。
sql/
├── cms(必选).sql // 核心脚本(必选)
导入系统表后,用户需自定义业务表,方可体验代码生成的功能。
4、连接数据库
如果已经配置完数据库连接,则可忽略此步骤
spring:
datasource:
# 主库数据源
url: jdbc:mysql://localhost:3306/ucode-cms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
5、可视化界面
访问可视化界面操作需要生成代码的表

6、重启项目
勾选表结构,点击生成,重启项目,相应的代码生效。访问地址http://localhost:8080/doc.html访问接口列表。

四、高级使用
在完成简单入门体验后,需要了解代码生成的高级部分,即全局配置。在项目中搜索类名CodeProperties即可查看所有内置可供修改的参数,在全局yml文件中覆盖默认值即可完成修改,按需配置。
单表处理
当全局配置ucode.code.joinQuery = false或者使用默认配置时,则仅处理单表结构。将表名、字段名、字段类型、备注信息转化为SSM风格的源代码。
多表连接
当在全局配置ucode.code.joinQuery = true时,则手动开启主外键查询,系统会自动读取表的主外键关系,并将其转化为连接查询的源代码。
主要参数
| 参数 | 默认值 | 使用备注 |
|---|---|---|
ucode.code.projectDir |
空 | 用户自定义多模块项目需要指定项目名 |
ucode.code.removeTablePrefix |
false |
根据需要是否在生成代码时移除表前缀 |
ucode.code.packageName |
xin.altitude.front |
配置用户自己的包名 |
ucode.code.useLombok |
true |
默认使用Lombok |
ucode.code.filterSysTable |
true |
默认过滤不显示系统表 |
ucode.code.joinQuery |
false |
是否使用连接查询(默认单表查询) |
ucode.code.xml.addXml |
false |
虽然说不建议使用XML文件编写SQL,但仍提高可开启开关 |
ucode.code.mapper.useCache |
true |
默认开启二级缓存,自定义业务缓存可关闭 |
本文链接:地址
【摸鱼神器】基于SSM风格的Java源代码生成器 单表生成 一对一、一对多、多对多连接查询生成的更多相关文章
- 基于SSM风格的Java源代码生成器
一.序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器.代码生成器模块属于可拆卸模块,即按需引入.代码生成器生成SSM(Spring.SpringBoot.Myb ...
- 【摸鱼神器】UI库秒变低代码工具——表单篇(二)子控件
上一篇介绍了表单控件,这一篇介绍一下表单里面的各种子控件的封装方式. 主要内容 需求分析 子控件的分类 子控件属性的分类 定义 interface. 定义子控件的的 props. 定义 json 文件 ...
- 【摸鱼神器】UI库秒变低代码工具——表单篇(一)设计
前面说了列表的低代码化的方法,本篇介绍一下表单的低代码化. 内容摘要 需求分析. 定义 interface. 定义表单控件的 props. 定义 json 文件. 基于 el-form 封装,实现依赖 ...
- 【摸鱼神器】UI库秒变LowCode工具——列表篇(一)设计与实现
内容摘要: 需求分析 定义 interface 定义 json 文件 定义列表控件的 props 基于 el-table 封装,实现依赖 json 渲染 实现内置功能:选择行(单选.多选),格式化.锁 ...
- Thief-Book 上班摸鱼神器
Thief-Book 上班摸鱼神器 介绍 Thief-Book 是一款真正的摸鱼神器,可以更加隐秘性大胆的看小说. 隐蔽性 自定义透明背景,随意调整大小,完美融入各种软件界面 快捷性 三个快捷键,实现 ...
- vscode插件(摸鱼神器-小霸王游戏机
vscode插件(摸鱼神器-小霸王游戏机 步骤 vscode扩展搜索小霸王,点击下载即可. 使用 默认有一个demo小游戏,即超级玛丽. 本地仓库 可以通过local菜单上的添加按钮添加本地nes r ...
- 【转】让Chrome化身成为摸鱼神器,利用Chorme运行布卡漫画以及其他安卓APK应用教程
下周就是十一了,无论是学生党还是工作党,大家的大概都会有点心不在焉,为了让大家更好的心不在焉,更好的在十一前最后一周愉快的摸鱼,今天就写一个如何让Chrome(google浏览器)运行安卓APK应用的 ...
- Django框架第七篇(模型层)--多表操作:一对多/多对多增删改,跨表查询(基于对象、基于双下划线跨表查询),聚合查询,分组查询,F查询与Q查询
一.多表操作 一对多字段的增删改(book表和publish表是一对多关系,publish_id字段) 增 create publish_id 传数字 (publish_id是数据库显示的字段名 ...
- 【摸鱼神器】一次搞定 vue3的 路由 + 菜单 + tabs
做一个管理后台,首先要设置路由,然后配置菜单(有时候还需要导航),再来一个动态tabs,最后加上权限判断. 这个是不是有点繁琐?尤其是路由的设置和菜单的配置,是不是很雷同?那么能不能简单一点呢?如果可 ...
随机推荐
- console.log(a)和console.log(window.a)的区别?
console.log(window.l); //undefined console.log(l); //Uncaught ReferenceError: l is not defined js对于未 ...
- flume安装及使用
最近在学习hadoop大数据平台,但是却感觉无从下手,于是看了一些专业的书籍,觉得还是先从下往上为学习也就是从源数据--数据抽取--存储--计算--展示这个路线来学习比较容易一些,所以就先从非结构化数 ...
- 146_LRU cache | LRU缓存设计
题目: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...
- Hbuilder将移动app或者web项目打包
1. 直接将项目 npm run build 打包生成dist文件 2.将dist文件放到Hbuilderx或者Hbuilder里面,这个时候你会发现他是w的,需要将其转换为A 点击该dist项目右键 ...
- echart的x轴或y轴区间标签如何从大到小排列
1.有时候我们做echart时,从后台接收返回回来的数据,没有按顺序排列,这里我遇到的是区间的值,看图 我这里是处理好了的,一开始,50-100这个区间在数组的最后一列,也就是在150-200后面的这 ...
- 带你学习BFS最小步数模型
最小步数模型 一.简介 最小步数模型和最短路模型的区别? 最短路模型:某一个点到另一个点的最短距离(坐标与坐标之间) 最小步数模型:不再是点(坐标),而是状态到另一个状态的转变 BFS难点所在(最短路 ...
- 很详细的FFT(快速傅里叶变换)概念与实现
FFT 首先要说明一个误区,很多人认为FFT只是用来处理多项式乘的,其实FFT是用来实现多项式的系数表示法和点值表示法的快速转换的,所以FFT的用处远不止多项式乘. FFT的前置知识:点值表示法,复数 ...
- SpringCloud之使用Zookeeper作为注册中心
SpringCloud之使用Zookeeper作为注册中心 linux安装zookeeper 安装zookeeper 关闭linux防火墙 启动zookeeper 1 创建项目导入依赖和配置文件 &l ...
- 前端HTML基础之form表单
目录 一:form表单 1.form表单功能 2.表单元素 二:form表单搭建(注册页面) 1.编写input会出现黄色阴影问题 三:完整版,前端代码(注册页面) 四:type属性介绍 1.inpu ...
- hexo博客如何插入图片
Hexo是一个静态的博客网站生成器,生成一个博客只需要分分钟的时间就能搞定. Hexo的博文是支持Markdown格式的,发表一篇文章只需要简简单单的几个命令. hexo new '文章'就会生成一个 ...