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

sql-gen:点击生成SQL、RO、VO的工具

sql-gen仓库地址:码云 Github

1. 概述

sql-gen是一个用于提高后端接口开发效率的小工具,主要有如下功能:

  1. 生成连表SQL语句
  2. 根据WHERE条件来生成封装查询条件的实体类(RO)
  3. 根据SELECT列来生成封装查询结果的实体类(VO)

sql-gen主要有如下特点:

  1. 自动生成表的别名(相关接口:TableAliasGenerator
  2. 自动推断主表和从表的连接条件,即ON语句(相关接口:JoinColumnDeducer
  3. 自动生成列的别名,解决SELECT和WHERE列中的名称重复问题(相关接口:ColumnAliasGenerator

2. 演示

2.1. 数据库准备

数据库中总共有5张表,如下:

  1. sys_class:班级表
  2. sys_grade:年级表
  3. sys_user:用户表,用于存放学生和家长
  4. sys_user_class_rel:学生和班级的关联关系表
  5. sys_parent_child_rel:学生和家长的关联关系表

tables.png


sys_user表和sys_parent_child_rel表的具体内容如下:

  1. 总共有4个用户
  2. 小明妈妈是小明的家长

table1.png


另外3张表的具体内容如下:

  1. 一年级的id为1
  2. 一年级下有一班和二班,其id分别为1112
  3. 小明和小红在一班,小刚在二班

table2.png

2.2. 连表查询(一)

查询id为1的用户(即小明)的学生信息,包括用户信息、班级信息和年级信息

  1. 此时需要连接sys_user、sys_user_class_rel、sys_class和sys_grade表
  2. 并且要以sys_user表的user_id列作为查询条件

join1.gif

可以看出,sql-gen默认会将主表和从表中名称相同的列作为连接的条件

2.3. 连表查询(二)

查询id为1的用户(即小明)及其家长的信息

  1. 此时需要连接sys_user、sys_parent_child_rel、sys_user表
  2. sys_user表出现了两次,第一次是作为学生表,第二次是作为家长表
  3. 然后以学生表的user_id列作为查询条件即可

join2.gif

可以看出,sql-gen还支持child.user_id=xxx.child_user_id形式的连接条件

2.4. 聚合查询

查询出每个班级中,学生id的平均值、学生名字的最大值和学生人数

  1. 此时需要连接sys_user、sys_user_class_rel、sys_class表
  2. 并且,需要将sys_class表的class_id列作为GROUP BY列
  3. 然后对sys_user表的user_id列进行AVG查询、user_name列进行MAX查询、gender列进行COUNT查询即可
  4. CN、MA、MI、AV、SU分别代表COUNT、MAX、MIN、AVG、SUM

在这里插入图片描述

http://www.lryc.cn/news/159934.html

相关文章:

  • pytorch从0开始安装
  • Java 语言实现最小生成树算法(如Prim算法、Kruskal算法)
  • 什么是Linux的Overcommit和OOM
  • 解决防火墙导致虚拟机不能ping通宿主机的问题
  • 数据结构:线性表(栈的实现)
  • python如何将一个dataframe快速写入clickhouse
  • Tiny Player Mac:小而美,音乐播放的极致体验
  • 2022年12月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • C语言学习:7、break与continue的用法
  • Ubuntu中安装clion并把clion添加到桌面快捷方式
  • 如何利用python来提取SQL语句中的表名称
  • linux通用时钟框架(CCF)
  • 基于AERMOD模型在大气环境影响评价中的实践技术应用
  • 企业内训课程、在线教育平台付费课程加密防下载的10种方式
  • 公关世界杂志公关世界杂志社公关世界编辑部2023年第14期目录
  • Linux常用(实用)命令大全
  • 2023-09-07力扣每日一题
  • 从C语言到C++_39(C++笔试面试题)next_permutation刷力扣
  • 适用于Linux的Windows子系统(系统安装步骤)
  • HarmonyOS/OpenHarmony(Stage模型)应用开发组合手势(二)并行识别
  • 如何使用GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图
  • Blender中的高级边缘控制和纹理映射
  • 从0开始学go第四天
  • 【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
  • vue3集成jsoneditor
  • 自然语言处理 中文停用词词典
  • CocosCreator3.8研究笔记(十)CocosCreator 图像资源的理解
  • 计算机使用中常用截图与标注方法
  • Elasticsearch,Logstash和Kibana安装部署(ELK Stack)
  • MATLAB中movmean函数用法